/ Published in: C++
Glavno programsko rješenje zadatka izrade programa za evidenciju životinja u trgovini kućnim ljubimcima.
Fakultet organizacije i informatike Varaždin
Kolegij: Strukture podataka
Fakultet organizacije i informatike Varaždin
Kolegij: Strukture podataka
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> #include <cstring> //#include "lista_polje.h" #include "lista_pokazivac.h" using namespace std; int nova_zivotinja() { elem novi; novi.sifra=sifra++; cout<<"Vrsta: "; cin.ignore(); cin.getline(novi.vrsta,35); cout<<"Naziv: "; cin.getline(novi.naziv,35); cout<<"Cijena: ";cin>>novi.cijena; if(novi.cijena<=0) {sifra--;return 0;} cout<<"Unesite datum dostave:\n"; cout<<"Dan: ";cin>>novi.datum.dan; if(novi.datum.dan<=0||novi.datum.dan>31) {sifra--;return 0;} cout<<"Mjesec: "; cin.ignore(); cin.getline(novi.datum.mjesec,10); if(novi.datum.dan>29&&!strcmp(novi.datum.mjesec,"veljaca")) {sifra--;return 0;} cout<<"Godina: ";cin>>novi.datum.godina; if(novi.datum.godina<1900||novi.datum.godina>2012) {sifra--;return 0;} InsertL(novi,br_elem,lista); br_elem++; return 1; } void ispis_od_posljednjeg() { elem a; int k=0; int p = PreviousL(EndL(lista),lista); while(k<br_elem){ a=RetrieveL(p,lista); cout<<"Sifra: "<<a.sifra<<endl; cout<<"Vrsta: "<<a.vrsta<<endl; cout<<"Naziv: "<<a.naziv<<endl; cout<<"Cijena: "<<a.cijena<<endl; cout<<"Datum: "<<a.datum.dan<<"."; cout<<a.datum.mjesec<<"."<<a.datum.godina<<".\n"; cout<<"-------------------------------\n"; p = PreviousL(p,lista); k++; } } void ispis_datum() { int br=0; elem a; int p = FirstL(lista); while(p!=EndL(lista)) { a = RetrieveL(p,lista); if(a.datum.godina>=2012) if((!strcmp(a.datum.mjesec,"rujan")&&a.datum.dan>23)||!strcmp(a.datum.mjesec,"listopad")|| !strcmp(a.datum.mjesec,"studeni")||!strcmp(a.datum.mjesec,"prosinac")) { br++; cout<<"Sifra: "<<a.sifra<<endl; cout<<"Vrsta: "<<a.vrsta<<endl; cout<<"Naziv: "<<a.naziv<<endl; cout<<"Cijena: "<<a.cijena<<endl; cout<<"Datum: "<<a.datum.dan<<"."<<a.datum.mjesec<<"."<<a.datum.godina<<".\n"; cout<<"------------------------------\n"; } p = NextL(p,lista); } cout<<"Broj pronadjenih zivotinja: "<<br<<endl<<endl; } int brisi_naziv() { char naziv[35]; cout<<"Unesite naziv zivotinje: "; cin.ignore(); cin.getline(naziv,35); int p = LocateL(naziv,lista); if(p==EndL(lista)) return 0; else { DeleteL(p,lista); br_elem--; return 1; } } int brisi_vrsta() { char vrsta[35]; int p; bool obrisan=0; v=1; cout<<"Unesite vrstu zivotinje: "; cin.ignore(); cin.getline(vrsta,35); while (LocateL(vrsta,lista)!=EndL(lista)) { p = LocateL(vrsta,lista); DeleteL(p,lista); br_elem--; obrisan=1; } v=0; if(!obrisan) return 0; else return 1; } void ispis() { elem a; int p=FirstL(lista); while (p!=EndL(lista)){ a=RetrieveL(p,lista); cout<<"Sifra: "<<a.sifra<<endl; cout<<"Vrsta: "<<a.vrsta<<endl; cout<<"Naziv: "<<a.naziv<<endl; cout<<"Cijena: "<<a.cijena<<endl; cout<<"Datum: "<<a.datum.dan<<"."; cout<<a.datum.mjesec<<"."<<a.datum.godina<<".\n"; cout<<"-------------------------------\n"; p = NextL(p,lista); } } void spoji(int i, int k, int j) { int I=i, J=k+1, K=0; elem *b = new elem [j-i+1]; elem prvi,drugi; while(I<=k && J<=j){ prvi=RetrieveL(I,lista); drugi=RetrieveL(J,lista); if(prvi.cijena > drugi.cijena) { b[K++]=prvi; I++; } else if(prvi.cijena < drugi.cijena){ b[K++]=drugi; J++; } else if(strcmp(prvi.naziv,drugi.naziv)==-1) { b[K++]=drugi; J++; } else { b[K++]=prvi; I++; } } if(I>k) while(J<=j) { drugi=RetrieveL(J,lista); b[K++] = drugi; J++; } else while(I<=k) { prvi=RetrieveL(I,lista); b[K++] = prvi; I++; } for(int I=0;I<=j-i;I++) Vrati(b[I],i+I,lista); delete [] b; } void msort(int i, int j) { if(i<j) { int k=(i+j)/2; msort(i,k); msort(k+1,j); spoji(i,k,j); } } void msort() { msort(0,br_elem-1); } int main() { int izbor; InitL(lista); do { cout<<"1. Dodaj zivotinju\n"; cout<<"2. Ispis od posljednje dodane\n"; cout<<"3. Ispis dodanih nakon 23. rujna 2012.\n"; cout<<"4. Brisanje pojedinacne zivotinje (po nazivu)\n"; cout<<"5. Brisanje po vrsti\n"; cout<<"6. Silazno sortiranje po cijeni (ili nazivu)\n"; cout<<"9. Izlaz\n"; cin>>izbor; switch(izbor) { case 1: if(nova_zivotinja()) cout<<"Zapis je uspjesno dodan.\n"; else cout<<"Pogresan unos\n"; break; case 2:ispis_od_posljednjeg();break; case 3:ispis_datum();break; case 4: if(brisi_naziv()) { cout<<"\nZivotinja je obrisana.\n\n"; ispis(); } else cout<<"\nZivotinja nije uspjesno obrisana.\nUnijeli ste pogresan naziv ili zapis ne postoji.\n\n";break; case 5: if(brisi_vrsta()) { cout<<"\nVrsta je obrisana.\n\n"; ispis(); } else cout<<"Vrsta nije uspjesno obrisana.\nUnijeli ste pogresan naziv ili zapis ne postoji.\n\n";break; case 6: msort(); ispis(); break; } }while(izbor!=9); DeleteAll(lista); system("pause"); return 0; }