Advertisement
Czarusiek997

TakO

May 21st, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.07 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. #include<cstdlib>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. /*
  9.  
  10.     STRUKTURA TEJ LISTY JEDNOKIERUNKOWEJ OPIERA SIÊ NA IDEI "DWÓCH STRUKTUR":
  11.     STRUKTURA 1. -> ODPOWIEDZIALNA ZA CA£¥ NASZ¥ LISTÊ
  12.     STRUKTURA 2. -> JEST TO POJEDYÑCZY REKORD
  13.     LISTA (TA DU¯A STRUKTURA), BÊDZIE SIÊ SK£ADAÆ Z MA£YCH ELEMENCIKÓW,
  14.     TO JEST STRUKTUR TYPU 'osoba'
  15.     LISTA BÊDZIE ZAWIERAÆ OPERACJE: DODAJ, USUÑ, WYŒWIETL
  16. */
  17.  
  18.  
  19. struct osoba
  20. {
  21.     public:
  22.     string imie;
  23.     string nazwisko;
  24.     string zawod;
  25.     int wiek;
  26.     int id;
  27.     osoba *nastepna;
  28.     osoba();    //konstruktor domyœlny
  29.  
  30. };
  31.  
  32. osoba::osoba()
  33. {
  34.     nastepna = nullptr; //ustawiamy wskaznik na zero
  35. }
  36.  
  37. struct lista
  38. {
  39. public:
  40.  
  41.     osoba *pierwsza;
  42.     void dodaj_osobe();
  43.     void usun_osobe();
  44.     void wyswietl_osobe();
  45.     void wyswietl_liste();
  46.     void odwroc_liste();
  47.     void zamien_rekordy();
  48.     int liczba_osob();
  49.     static int l_index;
  50.     lista();    //konstruktor
  51. };
  52.  
  53. lista::lista()
  54. {
  55.     this->pierwsza = 0;
  56. }
  57.  
  58.  
  59. void lista::dodaj_osobe()
  60. {
  61.     osoba *nowa = new osoba;    //ODPOWIEDZIALNE ZA STWORZENIE NOWEGO ELEMENTU
  62.     string imie, nazwisko, zawod;
  63.     int wiek;
  64.     cout<<"Podaj dane osoby w kolejnosci: IMIE NAZWISKO ZAWOD WIEK\n";
  65.     cin >> imie >> nazwisko >> zawod >> wiek ;
  66.     //RZECZ PIERWSZORZÊDNA - WYPE£NIAMY NASZĄ NOWĄ OSOBÊ PODANYMI DANYMI
  67.     l_index++;
  68.     nowa->imie = imie;
  69.     nowa->nazwisko = nazwisko;
  70.     nowa->zawod = zawod;
  71.     nowa->wiek = wiek;
  72.     nowa->id = l_index;
  73.  
  74.  
  75.     if(pierwsza == 0)       //sprawdzamy, czy to jest pierwszy element listy
  76.     {
  77.         pierwsza = nowa;
  78.     }
  79.     else
  80.     {
  81.             //W PRZECIWNYM RAZIE IDZIEMY NA KONIEC LISTY, EZLIFE
  82.  
  83.     osoba *temp = pierwsza;
  84.  
  85.     while(temp->nastepna)
  86.     {
  87.         temp = temp->nastepna;      //znajdujemy wskaznik na ostatni element
  88.     }
  89.  
  90.     temp->nastepna = nowa;
  91.     nowa->nastepna = 0;
  92.  
  93.     }
  94. }
  95.  
  96. void lista::wyswietl_osobe()
  97. {
  98.     int id;
  99.     bool flag = false;
  100.     cout<<"Podaj ID osoby, ktorej dane maja zostac wyswietlone, moze znajduje sie w rejestrze\n";
  101.     cin >> id;
  102.  
  103.         osoba *temp = pierwsza;
  104.     while(temp)
  105.     {
  106.          if(temp->id == id)
  107.          {
  108.              cout<<"Nr ID: " << temp->id << endl;
  109.              cout<<"Imie: "<<temp->imie << endl;
  110.              cout<<"Nazwisko: "<<temp->nazwisko << endl;
  111.              cout<<"Lat: "<<temp->wiek << endl;
  112.              cout<<"Zawod: "<<temp->zawod << endl;
  113.              flag = true;
  114.          }
  115.  
  116.          temp = temp->nastepna; //ustawiamy wskaznik na nastepna osobe
  117.     }
  118.     if(flag == false) cout<<"Nie ma osoby w rejestrze!\n";
  119.  
  120. }
  121.  
  122. void lista::wyswietl_liste()
  123. {
  124.     // wskaznik na pierwsza osobe
  125.     osoba *temp = pierwsza;
  126.  
  127.     while(temp)     //dopoki cos sie znajduje w tej liscie
  128.     {   cout<<"Nr ID: " << temp->id << endl;
  129.         cout<<"Imie: "<<temp->imie << endl;
  130.         cout<<"Nazwisko: "<<temp->nazwisko << endl;
  131.         cout<<"Lat: "<<temp->wiek << endl;
  132.         cout<<"Zawod: "<<temp->zawod << endl;
  133.         temp = temp->nastepna;      //ustawiamy wskaznik na nastepna osobe - proste ;D
  134.     }
  135. }
  136.  
  137. void lista::usun_osobe()
  138. {
  139.     int nr;
  140.     cout<<"Podaj nr ID osoby, ktora ma zostac usunieta z listy:\n"<<endl;
  141.     cin >> nr;
  142.     if(nr == 0)
  143.     {
  144.  
  145.         osoba *temp = pierwsza;
  146.         pierwsza = temp->nastepna;
  147.     }
  148.  
  149.     if(nr >= 1)
  150.     {
  151.         int k = 0;
  152.         osoba *temp = pierwsza;
  153.  
  154.         while(temp)
  155.         {
  156.  
  157.             if((k+1) == nr) break;      //Jezeli znalazlo, to przerywamy
  158.  
  159.             temp = temp->nastepna;      //Jezeli nie znalazlo, to przewijamy listê dalej
  160.             k++;
  161.         }
  162.         //TUTAJ SPRAWDZAMY JESZCZE, CZY TEN ELEMENT NIE JEST OSTATNI
  163.         //JEŚLI JEST, TO WSKAZNIK NA NEXT OSPBĘ JEST ROWNY ZERO
  164.  
  165.         if(temp->nastepna->nastepna == 0)
  166.             temp->nastepna = 0;
  167.  
  168.     //JEZELI NIE BYL TO OSTATNI ELEMENT
  169.  
  170.             else temp->nastepna = temp->nastepna->nastepna;
  171.     }
  172. }
  173.  
  174.  
  175. int lista::liczba_osob()
  176. {
  177.     int g = 0;
  178.     osoba *temp = pierwsza;
  179.     while(temp)
  180.     {
  181.         g++;
  182.         temp = temp->nastepna;
  183.     }
  184.     return g;
  185. }
  186.  
  187. int lista::l_index = 0;
  188.  
  189. int main()
  190. {
  191.     char g;
  192.     lista *baza = new lista;
  193.  
  194.     do{
  195.  
  196.         cout<<"Co chcesz zrobic?\n";
  197.         cout<<"[1]Dodaj osobe\n[2]Wyswietl osobe(ID required)\n[3]Wyswietl cala liste\n[4]Usun osobe(ID required)\n[9]KONIEC\n";
  198.         cin >> g;
  199.         switch(g)
  200.         {
  201.         case '1':
  202.             baza->dodaj_osobe();
  203.             break;
  204.         case '2':
  205.             baza->wyswietl_osobe();
  206.             break;
  207.         case '3':
  208.             baza->wyswietl_liste();
  209.             break;
  210.         case '4':
  211.             baza->usun_osobe();
  212.             break;
  213.         case '9':
  214.             cout<<"Koniec programu. ELKO ziomek!\n";
  215.             break;
  216.         default:
  217.             cout<<"Wybierz odpowiednią akcję ziomek!\n";
  218.             break;
  219.  
  220.         }
  221.  
  222.     }while(g!='9');
  223.  
  224.  
  225.     delete baza;
  226.     return 0;
  227.  
  228.  
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement