Advertisement
mar1985

Untitled

May 27th, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.85 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. struct Oosoba
  8. {
  9.     string imie, nazwisko;
  10.     int wiek;
  11.     Oosoba *next;
  12. };
  13. struct Lista
  14. {
  15.     Oosoba *head;
  16. };
  17. Oosoba* nowa_osoba(string imie, string nazwisko, int wiek)
  18. {
  19.     Oosoba* osoba = new Oosoba;
  20.     osoba->imie = imie;
  21.     osoba->nazwisko = nazwisko;
  22.     osoba->wiek = wiek;
  23.     osoba->next = NULL;
  24.     return osoba;
  25. }
  26.  
  27. Lista* nowa_lista()
  28. {
  29.     Lista* lista = new Lista;
  30.     lista->head = NULL;
  31.  
  32.     return lista;
  33. }
  34.  
  35. void dodaj_osobe(Lista* lista, Oosoba* osoba)
  36. {
  37.  
  38.     if (!lista->head)
  39.     {
  40.         lista->head = osoba;
  41.     }
  42.     else
  43.     {
  44.         Oosoba* tmp = lista->head;
  45.  
  46.         while (tmp->next != NULL)
  47.         {
  48.             tmp = tmp->next;
  49.         }
  50.  
  51.         tmp->next = osoba;
  52.     }
  53. }
  54.  
  55. void drukuj_liste(Lista* lista)
  56. {
  57.     Oosoba* tmp = lista->head;
  58.  
  59.     while (tmp != NULL)
  60.     {
  61.         cout << "Imie: " << tmp->imie << ", Nazwisko: " << tmp->nazwisko << ", Wiek: " << tmp->wiek << endl;
  62.  
  63.         tmp = tmp->next;
  64.     }
  65. }
  66.  
  67. int rozmiar_listy(Lista* lista)
  68. {
  69.     Oosoba* tmp = lista->head;
  70.     int rozmiar = 0;
  71.  
  72.     while (tmp != NULL)
  73.     {
  74.         rozmiar++;
  75.  
  76.         tmp = tmp->next;
  77.     }
  78.  
  79.     return rozmiar;
  80. }
  81.  
  82. Oosoba* osoba_na_liscie(Lista* lista, int indeks)
  83. {
  84.     Oosoba* tmp = lista->head;
  85.  
  86.     for(int i = 0; i < indeks; i++)
  87.     {
  88.         tmp = tmp->next;
  89.     }
  90.  
  91.     return tmp;
  92. }
  93.  
  94. void kasuj_osobe(Lista* lista, int indeks)
  95. {
  96.     Oosoba* tmp = lista->head;
  97.  
  98.     if (indeks == 0)
  99.     {
  100.         lista->head = tmp->next;
  101.     }
  102.     else
  103.     {
  104.         for(int i = 0; i < indeks - 1; i++)
  105.         {
  106.             tmp = tmp->next;
  107.         }
  108.  
  109.         tmp->next = tmp->next->next;
  110.  
  111.     }
  112. }
  113.  
  114. void dodaj_osobe(Lista* lista, Oosoba* osoba, int indeks)
  115. {
  116.     if (indeks == 0)
  117.     {
  118.         osoba->next = lista->head;
  119.         lista->head = osoba;
  120.     }
  121.     else
  122.     {
  123.         Oosoba *tmp = lista->head;
  124.  
  125.         for (int i = 0; i < indeks - 1; i++)
  126.         {
  127.             tmp = tmp->next;
  128.         }
  129.  
  130.         osoba->next = tmp->next;
  131.         tmp->next = osoba;
  132.     }
  133. }
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141. void kasuj_liste(Oosoba *&head)
  142. {
  143.     Oosoba *temp;
  144.     if (head!= NULL)
  145.     {
  146.         kasuj_liste(head->next);
  147.         temp=head;
  148.         head=NULL;
  149.         delete temp;
  150.  
  151.         temp=NULL;
  152.     }
  153. }
  154. int main ()
  155. {
  156.     Oosoba *head;
  157.     Lista* lista = nowa_lista();
  158.  
  159.     int n;
  160.     string imie;
  161.     string nazwisko;
  162.     int wiek;
  163.     int licznik=0;
  164.  
  165.  
  166.     cout << "podaj ilosc osob jaka chcesz dodac do bazy" << endl;
  167.     cin >> n;
  168.  
  169.     cout << "chcesz wpisac dane  "  << n <<" osob" << endl;
  170.  
  171.     do
  172.     {
  173.         licznik++;
  174.         cout << "wpisz dane  "  << licznik <<" osoby" << endl;
  175.         cout << "Imie:";
  176.         cin >> imie;
  177.         cout << "Nazwisko:";
  178.         cin >> nazwisko;
  179.         cout << "Wiek:";
  180.         cin >> wiek;
  181.  
  182.         dodaj_osobe(lista, nowa_osoba(imie, nazwisko, wiek));
  183.  
  184.     }
  185.     while (licznik!=n);
  186.  
  187.     drukuj_liste(lista);
  188.  
  189.     Oosoba* tmp;
  190.     Oosoba* przedostatnia = osoba_na_liscie(lista, rozmiar_listy(lista) - 1 - 1);
  191.     for (int i = 0; i < rozmiar_listy(lista); i++)
  192.     {
  193.         tmp = osoba_na_liscie(lista, i);
  194.  
  195.         if (tmp->wiek > przedostatnia->wiek)
  196.         {
  197.             kasuj_osobe(lista, i);
  198.  
  199.             cout << "Osoba na pozycji " << i+1 << " ma wiekszy wiek od przedostatniej" << endl;
  200.             cout << "Popraw dane  "  << i+1 <<" osoby" << endl;
  201.             cout << "Imie:";
  202.             cin >> imie;
  203.             cout << "Nazwisko:";
  204.             cin >> nazwisko;
  205.             cout << "Wiek:";
  206.             cin >> wiek;
  207.  
  208.             dodaj_osobe(lista, nowa_osoba(imie, nazwisko, wiek), i);
  209.         }
  210.     }
  211.     drukuj_liste(lista);
  212.     kasuj_liste(head);
  213.  
  214.     cout << lista;
  215.     return 0;
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement