Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <iomanip>
- using namespace std;
- struct Oosoba
- {
- string imie, nazwisko;
- int wiek;
- Oosoba *next;
- };
- struct Lista
- {
- Oosoba *head;
- };
- Oosoba* nowa_osoba(string imie, string nazwisko, int wiek)
- {
- Oosoba* osoba = new Oosoba;
- osoba->imie = imie;
- osoba->nazwisko = nazwisko;
- osoba->wiek = wiek;
- osoba->next = NULL;
- return osoba;
- }
- Lista* nowa_lista()
- {
- Lista* lista = new Lista;
- lista->head = NULL;
- return lista;
- }
- void dodaj_osobe(Lista* lista, Oosoba* osoba)
- {
- if (!lista->head)
- {
- lista->head = osoba;
- }
- else
- {
- Oosoba* tmp = lista->head;
- while (tmp->next != NULL)
- {
- tmp = tmp->next;
- }
- tmp->next = osoba;
- }
- }
- void drukuj_liste(Lista* lista)
- {
- Oosoba* tmp = lista->head;
- while (tmp != NULL)
- {
- cout << "Imie: " << tmp->imie << ", Nazwisko: " << tmp->nazwisko << ", Wiek: " << tmp->wiek << endl;
- tmp = tmp->next;
- }
- }
- int rozmiar_listy(Lista* lista)
- {
- Oosoba* tmp = lista->head;
- int rozmiar = 0;
- while (tmp != NULL)
- {
- rozmiar++;
- tmp = tmp->next;
- }
- return rozmiar;
- }
- Oosoba* osoba_na_liscie(Lista* lista, int indeks)
- {
- Oosoba* tmp = lista->head;
- for(int i = 0; i < indeks; i++)
- {
- tmp = tmp->next;
- }
- return tmp;
- }
- void kasuj_osobe(Lista* lista, int indeks)
- {
- Oosoba* tmp = lista->head;
- if (indeks == 0)
- {
- lista->head = tmp->next;
- }
- else
- {
- for(int i = 0; i < indeks - 1; i++)
- {
- tmp = tmp->next;
- }
- tmp->next = tmp->next->next;
- }
- }
- void dodaj_osobe(Lista* lista, Oosoba* osoba, int indeks)
- {
- if (indeks == 0)
- {
- osoba->next = lista->head;
- lista->head = osoba;
- }
- else
- {
- Oosoba *tmp = lista->head;
- for (int i = 0; i < indeks - 1; i++)
- {
- tmp = tmp->next;
- }
- osoba->next = tmp->next;
- tmp->next = osoba;
- }
- }
- void kasuj_liste(Oosoba *&head)
- {
- Oosoba *temp;
- if (head!= NULL)
- {
- kasuj_liste(head->next);
- temp=head;
- head=NULL;
- delete temp;
- temp=NULL;
- }
- }
- int main ()
- {
- Oosoba *head;
- Lista* lista = nowa_lista();
- int n;
- string imie;
- string nazwisko;
- int wiek;
- int licznik=0;
- cout << "podaj ilosc osob jaka chcesz dodac do bazy" << endl;
- cin >> n;
- cout << "chcesz wpisac dane " << n <<" osob" << endl;
- do
- {
- licznik++;
- cout << "wpisz dane " << licznik <<" osoby" << endl;
- cout << "Imie:";
- cin >> imie;
- cout << "Nazwisko:";
- cin >> nazwisko;
- cout << "Wiek:";
- cin >> wiek;
- dodaj_osobe(lista, nowa_osoba(imie, nazwisko, wiek));
- }
- while (licznik!=n);
- drukuj_liste(lista);
- Oosoba* tmp;
- Oosoba* przedostatnia = osoba_na_liscie(lista, rozmiar_listy(lista) - 1 - 1);
- for (int i = 0; i < rozmiar_listy(lista); i++)
- {
- tmp = osoba_na_liscie(lista, i);
- if (tmp->wiek > przedostatnia->wiek)
- {
- kasuj_osobe(lista, i);
- cout << "Osoba na pozycji " << i+1 << " ma wiekszy wiek od przedostatniej" << endl;
- cout << "Popraw dane " << i+1 <<" osoby" << endl;
- cout << "Imie:";
- cin >> imie;
- cout << "Nazwisko:";
- cin >> nazwisko;
- cout << "Wiek:";
- cin >> wiek;
- dodaj_osobe(lista, nowa_osoba(imie, nazwisko, wiek), i);
- }
- }
- drukuj_liste(lista);
- kasuj_liste(head);
- cout << lista;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement