ROZWIĄZANIA  PRZYKŁADOWYCH  ZADAŃ
ilustrujących reprezentację danych w postaci tablicy struktur

ZADANIE_1    Zdefiniuj typ strukturalny oraz 100-elementową tablicę pozwalającą przechowywać
informacje o książkach w bibliotece (tytuł, autor, indeks, cena)
oraz napisz funkcję, która wyświetli na ekranie wszystkie dane tanich książek (tzn. cena<10zł).

ZADANIE_2    Zdefiniuj typ strukturalny oraz 50-cio elementową tablicę struktur pozwalającą przechowywać
informacje o pracownikach fabryki (nazwisko, stanowisko, płeć, pensja)
Napisz funkcję, która policzy średnią pensję kobiet w tej fabryce
.

ZADANIE_3    Zdefiniuj strukturę przechowującą dane zestawu komputerowego w sklepie
(nazwa_zestawu = 50 znaków; typ procesora = 20 znaków; częstotliwość zegara = liczba całkowita
dodatnia; cena_zestawu = liczba rzeczywista) oraz 20-elementową tablicę takich struktur.
Napisz funkcję wyznaczającą indeks najtańszego zestawu z procesorem "AMD Athlon"
.

ZADANIE_4    Zdefiniuj typ struktury przechowującej dane personalne pracownika
(nazwisko - 20 znaków; imię - 15 znaków; pensja - liczba rzeczywista;
płeć - znak 'm' lub znak 'k') oraz 100-elementową tablicę takich struktur.
Napisz funkcję sprawdzającą czy w danej firmie średnia pensja jest większa od 3000 zł
.

ZADANIE_5    Zdefiniuj typ struktury przechowującej dane rezerwacji w hotelu
(termin_rezerwacji = 30 znaków; nazwisko = 25 znaków; typ_pokoju = litera;
 ilosc_miejsc = liczba całkowita) oraz 100-elementowa tablicę takich struktur.
Napisz funkcję zliczającą ilość rezerwacji na nazwisko "Kowalski"
.

ZADANIE_6    Zdefiniuj typ struktury przechowującej dane o połączeniach autobusowych
(Miasto docelowe: 30 znaków; długosc_trasy : liczba całkowita bez znaku;
godzina odjazdu: liczba rzeczywista; cena_biletu - złote i grosze)
oraz 500-elementową tablicę takich struktur.
Napisz funkcję wyznaczającą średnią cenę biletu dla trasy krótszej niż 10km.


  1. Zdefiniuj typ strukturalny oraz 100-elementową tablicę pozwalającą przechowywać
    informacje o książkach w bibliotece (tytuł, autor, indeks, cena)
    oraz napisz funkcję, która wyświetli na ekranie wszystkie dane tanich książek (tzn. cena<10zł).

#include <iostream>

 

//definicja typu strukturalnego

struct Tksiazka
{
  char tytul[50];
  char autor[30];
  unsigned indeks;
  float cena;
};

//definicja 100-elementowej tablicy struktur
Tksiazka biblioteka[100];

 

//definicja funkcji wyświetlającej "tanie" książki (o cenie < 10zł)
void WyswietlTanieKsiazki( Tksiazka b[ ], int ilosc_ks )
{
  bool jest=false;
  cout << endl << "Lista tanich ksiazek:";

  for(int i=0; i<ilosc_ks; i++)
    if( b[i].cena<10.00 )
      {
        cout << endl;
        cout << endl << " Tytul: " << b[i].tytul;
        cout << endl << " Autor: " << b[i].autor;
        cout << endl << "Indeks: " << b[i].indeks;
        cout << endl << "  Cena: " << b[i].cena;
        jest=true;
      }

 

  if( !jest )
    cout << endl << "Lista jest pusta";

 

  cout << endl << "Nacisnij klawisz ENTER";
  cin.get();
}

 

  1. Zdefiniuj typ strukturalny oraz 50-cio elementową tablicę struktur pozwalającą przechowywać
    informacje o pracownikach fabryki (nazwisko, stanowisko, płeć, pensja)
    Napisz funkcję, która policzy średnią pensję kobiet w tej fabryce.

#include <iostream>

 

//definicja typu strukturalnego

struct Tpracownik
{
  char nazwisko[30];
  char stanowisko[30];
  char plec;
  float pensja;
};

//definicja 50-cio elementowej tablicy struktur
Tpracownik fabryka[50];

 

//definicja funkcji wyliczającej średnią pensję kobiet
float SredniaPensjaKobiet( Tpracownik f[ ], int ilosc_prac )
{
  float suma=0;

  int ilosc_kob=0;

  for(int i=0; i<ilosc_prac; i++)
    if( f[i].plec=='k' )
      {
        suma += f[i].pensja;

        ilosc_kob++;
      }

 

  if( ilosc_kob==0 )

    {
     cout << endl << "Ilosc kobiet=0. Nie mozna policzyc sredniej";

     return -1.0;

    }

 

  float srednia;

  srednia = suma/ilosc_kob;

  return srednia;
}

 

  1. Zdefiniuj strukturę przechowującą dane zestawu komputerowego w sklepie
    (nazwa_zestawu = 50 znaków; typ procesora = 20 znaków; częstotliwość zegara = liczba całkowita
     dodatnia; cena_zestawu = liczba rzeczywista) oraz 20-elementową tablicę takich struktur.
    Napisz funkcję wyznaczającą indeks najtańszego zestawu z procesorem "AMD Athlon".

#include <string.h>

 

struct TZestawKomputerowy
{
  char nazwa[51];
  char procesor[21];
  unsigned zegar;
  float cena;
};

 

TZestawKomputerowy sklep[20];

 

int IndeksNajtanszego( TZestawKomputerowy sklep[] )
{
  int indeks=-1;
  float najmniejsza_cena;
  for(int i=0 ; i<20; i++)
    if( strcmp(sklep[i].procesor, "AMD Athlon")==0 )
      if( indeks==-1 || sklep[i].cena<najmniejsza_cena )
        {
          indeks=i;
          najmniejsza_cena = sklep[i].cena;
        }


  return indeks;
}

 

  1. Zdefiniuj typ struktury przechowującej dane personalne pracownika
    (nazwisko - 20 znaków; imię - 15 znaków; pensja - liczba rzeczywista; płeć - znak 'm' lub znak 'k')
    oraz 100-elementową tablicę takich struktur.
    Napisz funkcję sprawdzającą czy w danej firmie średnia pensja jest większa od 3000 zł

struct TDanePracownika
{
  char nazwisko[21];
  char imię[16];
  float pensja;
  char plec;
};

 

TDanePracownika lista_pracownikow[100];

 

bool CzyPensjaWieksza( TDanePracownika lista_pracownikow[],

                       int liczba_pracownikow )
{
  if( liczba_pracownikow<=0 )
    return false;

  

  //obliczenie sumy pensji
  float suma=0;
  for(int i=0 ; i<liczba_pracownikow; i++)
    suma += lista_pracownikow[i].pensja;

 

  //sprawdzenie średniej pensji
  if( suma/liczba_pracownikow > 3000 )
    return true;
  else

    return false;
}

 

  1. Zdefiniuj typ struktury przechowującej dane rezerwacji w hotelu (termin_rezerwacji = 30 znaków;
    nazwisko = 25 znaków; typ_pokoju = litera; ilosc_miejsc = liczba całkowita)
    oraz 100-elementowa tablicę takich struktur.
    Napisz funkcję zliczającą ilość rezerwacji na nazwisko "Kowalski".

#include <string.h>

 

struct TRezerwacja
{
  char termin[31];
  char nazwisko[26];
  char typ_pokoju;
  int ilosc_miejsc;
};

 

TRezerwacja lista_rezerwacji[100];

 

int PoliczRezerwacjeKowalskiego( )
{
  int licznik=0;
  for(int i=0 ; i<100; i++)
    if( strcmp(lista_rezerwacji[i].nazwisko,"Kowalski")==0 )
      licznik++;

  return licznik;
}

 

  1. Zdefiniuj typ struktury przechowującej dane o połączeniach autobusowych
    (Miasto docelowe: 30 znaków; długosc_trasy : liczba całkowita bez znaku;
    godzina odjazdu: liczba rzeczywista; cena_biletu - złote i grosze)
    oraz 500-elementową tablicę takich struktur.
    Napisz funkcję wyznaczającą średnią cenę biletu dla trasy krótszej niż 10km.

struct TPolaczenieAutobusowe
{
  char miasto_docelowe[31];
  unsigned dlugosc_trasy;
  float godzina_odjazdu;
  float cena;
};

 

TPolaczenieAutobusowe rozklad_jazdy[500];

 

float SredniaCena( TPolaczenieAutobusowe rozklad[],

                   int liczba_wszystkich_polaczen )
{
  float suma_cen_wybranych=0;
  int liczba_wybranych=0;
  for(int i=0 ; i<liczba_wszystkich_polaczen; i++)
    if( rozklad[i].dlugosc_trasy<10 )
      {
        suma_cen_wybranych += rozklad[i].cena;
        liczba_wybranych++;
      }

 

  if( liczba_wybranych==0 )
    return -1;

  else

    return suma_cen_wybranych/liczba_wybranych;
}