Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //GLAVNI PROGRAM
- #include <iostream>
- #include <cstdlib>
- #include <cstring>
- using namespace std;
- //#include "lista_pokazivac.h"
- #include "lista_polje.h"
- int Dodaj (pacijent x, LISTA *L)
- {
- if ( LocateL(x, L) == EndL(L) )
- {
- InsertL(x, EndL(L), L);
- return 1;
- }
- else return 0;
- }
- int Brisi (int mbroj, LISTA *L)
- {
- pozicija p = FirstL(L);
- pacijent pom;
- while (p != EndL(L))
- {
- pom = RetrieveL(p, L);
- if (pom.mbroj == mbroj)
- {
- DeleteL(p, L);
- return 1;
- }
- p = NextL(p, L);
- }
- return 0;
- }
- void Ispis (LISTA *L)
- {
- pacijent polje[1000];
- int brojac = 0;
- pacijent pom;
- pozicija p = FirstL(L);
- while (p != EndL(L))
- {
- polje[brojac] = RetrieveL(p, L);
- brojac = brojac + 1;
- p = NextL(p, L);
- }
- for (int i = 0; i < brojac; i++)
- {
- for (int j = 0; j < brojac - i - 1; j++)
- {
- if (polje[j].mbroj > polje[j+1].mbroj)
- {
- pom = polje[j];
- polje[j] = polje[j+1];
- polje[j+1] = pom;
- }
- }
- }
- for (int i = 0; i < brojac; i++) cout << "\nMaticni broj: " << polje[i].mbroj <<
- "\nIme i prezime: " << polje[i].prezime_ime << "\nDob: " << polje[i].starost << "\n";
- }
- void Pretrazi (LISTA *L)
- {
- pozicija p = FirstL(L);
- pacijent pom;
- int brojac = 0;
- cout << "\n\nPopis pacijenata mladjih od 18 godina:\n";
- while (p != EndL(L))
- {
- pom = RetrieveL(p, L);
- if (pom.starost < 18)
- {
- brojac = brojac + 1;
- cout << "\nMaticni broj: " << pom.mbroj << "\nIme i prezime: " << pom.prezime_ime <<
- "\nDob: " << pom.starost << "\n\n";
- }
- p = NextL(p, L);
- }
- cout << "\nBroj osoba mladjih od 18 godina: " << brojac << "\n\n";
- }
- int main()
- {
- LISTA *lista = new LISTA;
- InitL(lista);
- int izbor, mbroj;
- pacijent x;
- do {
- cout << "\nOdaberite opciju:\n1. Unos pacijenata\n2. Ispis pacijenata\
- n3. Ispis pacijenata mladjih od 18 godina i njihov broj\n4. Brisanje podataka o pacijentu iz evidencije\
- n5. Izlaz\nVas izbor: ";
- cin >> izbor;
- switch (izbor)
- {
- case 1:
- cout << "\nMaticni broj pacijenta: ";
- cin >> x.mbroj;
- cout << "Ime i prezime: ";
- cin.ignore();
- cin.getline(x.prezime_ime, 50);
- cout << "Dob pacijenta: ";
- cin >> x.starost;
- if ( ! Dodaj(x, lista) )
- cout << "\nPacijent s tim matičnim brojem je vec dodan";
- cout << endl << endl;
- break;
- case 2:
- Ispis(lista);
- break;
- case 3:
- Pretrazi(lista);
- break;
- case 4:
- cout << "\nMaticni broj pacijenta kojeg zelite obrisati iz liste: ";
- cin >> mbroj;
- if (! Brisi(mbroj, lista) )
- cout << "\nNe postoji pacijent s tim maticnim brojem";
- cout << endl << endl;
- }
- } while (izbor != 5);
- DeleteAllL(lista);
- system("pause");
- return 0;
- }
- //lista_pokazivac.h
- struct pacijent {
- int mbroj, starost;
- char prezime_ime[50];
- };
- struct LISTA {
- pacijent el;
- LISTA *sljedeci;
- };
- typedef LISTA* pozicija;
- void InitL (LISTA *L)
- {
- L->sljedeci = NULL;
- }
- LISTA * FirstL (LISTA *L)
- {
- return L;
- }
- LISTA * EndL (LISTA *L)
- {
- while (L->sljedeci)
- L = L->sljedeci;
- return L;
- }
- LISTA * NextL (pozicija p, LISTA *L)
- {
- return p->sljedeci;
- }
- LISTA * PreviousL (pozicija p, LISTA *L)
- {
- while (L->sljedeci)
- {
- if (L->sljedeci == p)
- return L;
- L = L->sljedeci;
- }
- return 0;
- }
- pacijent RetrieveL (pozicija p, LISTA *L)
- {
- return (p->sljedeci)->el;
- }
- pozicija LocateL (pacijent x, LISTA *L)
- {
- while (L->sljedeci)
- {
- if ((L->sljedeci)->el.mbroj == x.mbroj)
- return L;
- L = L->sljedeci;
- }
- return L;
- }
- int InsertL (pacijent x, pozicija p, LISTA *L)
- {
- pozicija p2 = new LISTA;
- p2->el = x;
- p2->sljedeci = p->sljedeci;
- p->sljedeci = p2;
- }
- void DeleteL (pozicija p, LISTA *L) {
- pozicija p2 = (p->sljedeci)->sljedeci;
- delete p->sljedeci;
- p->sljedeci = p2;
- }
- void DeleteAllL (LISTA *L)
- {
- pozicija p;
- while (L)
- {
- p = L;
- L = L->sljedeci;
- delete p;
- }
- }
- //lista_polje.h
- struct pacijent {
- int mbroj, starost;
- char prezime_ime[50];
- };
- struct LISTA {
- pacijent polje[1000];
- int cursor;
- };
- typedef int pozicija;
- int FirstL (LISTA *L)
- {
- return 0;
- }
- int EndL (LISTA *L)
- {
- return L->cursor;
- }
- int NextL (pozicija p, LISTA *L)
- {
- if (p < L->cursor)
- return p + 1;
- }
- pozicija previousL (pozicija p, LISTA *L)
- {
- if (p > 0)
- return p - 1;
- }
- pozicija LocateL (pacijent x, LISTA *L)
- {
- for (int i = 0; i < L->cursor; i++)
- {
- if (L->polje[i].mbroj == x.mbroj)
- return i;
- }
- return L->cursor;
- }
- pacijent RetrieveL (pozicija p, LISTA *L)
- {
- return L->polje[p];
- }
- void DeleteAllL (LISTA *L)
- {
- L->cursor = 0;
- }
- void DeleteL (pozicija p, LISTA *L)
- {
- if (p < 0 || p >= L->cursor) return;
- for (int i = p; i < L->cursor - 1; i++)
- L->polje[i] = L->polje[i+1];
- L->cursor = L->cursor - 1;
- }
- void InsertL (pacijent x, pozicija p, LISTA *L)
- {
- if (p < 0 || p > L->cursor) return;
- L->cursor = L->cursor + 1;
- for (int i = L->cursor; i > p; i--)
- L->polje[i] = L->polje[i-1];
- L->polje[p] = x;
- }
- void InitL (LISTA *L)
- {
- L->cursor = 0;
- }
Add Comment
Please, Sign In to add comment