Advertisement
MeehoweCK

Untitled

Nov 23rd, 2018
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <conio.h>
  4.  
  5. using namespace std;
  6.  
  7. // struktury
  8. struct Pracownik
  9. {
  10. // pola:
  11.     string imie;
  12.     string nazwisko;
  13.     int wiek;
  14.     char plec;
  15.     double placa;
  16. };
  17.  
  18. unsigned wielkosc_tablicy = 0;
  19.  
  20. void sortuj_wedlug_wieku(Pracownik* pracownicy)
  21. {
  22.     for(unsigned i = 0; i < wielkosc_tablicy; i++)
  23.     {
  24.         for(unsigned j = 0; j < wielkosc_tablicy - i; i++)
  25.         {
  26.             if(pracownicy[j].wiek > pracownicy[j + 1].wiek)
  27.                 swap(pracownicy[j], pracownicy[j + 1]);
  28.         }
  29.     }
  30. }
  31.  
  32. void sortuj_wedlug_placy(Pracownik* pracownicy)
  33. {
  34.     for(unsigned i = 0; i < wielkosc_tablicy; i++)
  35.     {
  36.         for(unsigned j = 0; j < wielkosc_tablicy - i; i++)
  37.         {
  38.             if(pracownicy[j].placa < pracownicy[j + 1].placa)
  39.                 swap(pracownicy[j], pracownicy[j + 1]);
  40.         }
  41.     }
  42. }
  43.  
  44. void sortuj_wedlug_nazwiska(Pracownik* pracownicy)
  45. {
  46.     for(unsigned i = 0; i < wielkosc_tablicy; i++)
  47.     {
  48.         for(unsigned j = 0; j < wielkosc_tablicy - i; i++)
  49.         {
  50.             if(pracownicy[j].nazwisko > pracownicy[j + 1].nazwisko)
  51.                 swap(pracownicy[j], pracownicy[j + 1]);
  52.         }
  53.     }
  54. }
  55.  
  56. void wypisz_dane(Pracownik pracownik)
  57. {
  58.     cout << pracownik.imie << " " << pracownik.nazwisko << ", ";
  59.     if(pracownik.plec == 'm')
  60.         cout << "mezczyzna, ";
  61.     else
  62.         cout << "kobieta, ";
  63.     cout << "lat " << pracownik.wiek << ", zarabia " << pracownik.placa << " PLN miesiecznie" << endl;
  64. }
  65. Pracownik* dodaj_pracownika(Pracownik* pracownicy)
  66. {
  67.     Pracownik* temp = new Pracownik[wielkosc_tablicy + 1];
  68.     for(unsigned i = 0; i < wielkosc_tablicy; i++)
  69.     {
  70.         temp[i] = pracownicy[i];
  71.     }
  72.     ++wielkosc_tablicy;
  73.     delete[] pracownicy;
  74.     return temp;
  75. }
  76. void wpisz_dane_pracownika(Pracownik* pracownicy, Pracownik nowy)
  77. {
  78.     pracownicy[wielkosc_tablicy - 1].imie = nowy.imie;
  79.     pracownicy[wielkosc_tablicy - 1].nazwisko = nowy.nazwisko;
  80.     pracownicy[wielkosc_tablicy - 1].wiek = nowy.wiek;
  81.     pracownicy[wielkosc_tablicy - 1].plec = nowy.plec;
  82.     pracownicy[wielkosc_tablicy - 1].placa = nowy.placa;
  83. }
  84. int main()
  85. {
  86.     Pracownik* pracownicy;
  87.     Pracownik nowy;
  88.     pracownicy = new Pracownik[wielkosc_tablicy];
  89.     ifstream plik;
  90.     plik.open("plik.txt");
  91.     if(plik.good())
  92.     {
  93.         while(!plik.eof())      // eof() zwraca true jeśli znajdujemy się na końcu pliku
  94.         {
  95.             plik >> nowy.imie >> nowy.nazwisko >> nowy.wiek >> nowy.plec >> nowy.placa;
  96.             pracownicy = dodaj_pracownika(pracownicy);
  97.             wpisz_dane_pracownika(pracownicy, nowy);
  98.         }
  99.     }
  100.     plik.close();
  101.     for(unsigned i = 0; i < wielkosc_tablicy; ++i)
  102.         wypisz_dane(pracownicy[i]);
  103.     // MENU:
  104.     cout << endl << "Zdecyduj jak posortowac dane: " << endl;
  105.     cout << "N - wedlug nazwiska" << endl;
  106.     cout << "P - wedlug placy" << endl;
  107.     cout << "W - wedlug wieku" << endl;
  108.     cout << "inny klawisz - pomin" << endl << endl;
  109.  
  110.     char znak = getch();
  111.     znak = toupper(znak);
  112.     switch(znak)
  113.     {
  114.     case 'N':
  115.         cout << "sortowanie danych wedlug nazwiska" << endl;
  116.         sortuj_wedlug_nazwiska(pracownicy);
  117.         break;
  118.     case 'P':
  119.         cout << "sortowanie danych wedlug placy" << endl;
  120.         sortuj_wedlug_placy(pracownicy);
  121.         break;
  122.     case 'W':
  123.         cout << "sortowanie danych wedlug wieku" << endl;
  124.         sortuj_wedlug_wieku(pracownicy);
  125.         break;
  126.     default:
  127.         break;
  128.     }
  129.     for(unsigned i = 0; i < wielkosc_tablicy; ++i)
  130.         wypisz_dane(pracownicy[i]);
  131.     delete[] pracownicy;
  132.     return 0;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement