/ Published in: C++
Source code main.cpp koji je napravljen kao rješenje problema s evidencijom životinja za zadatak 1 iz Struktura podataka
Expand |
Embed | Plain Text
#include<iostream> #include"Lista_pokazivaci.h" //#include"Lista_polja.h" #include<cstdlib> using namespace std; int si=1; int prebroji(lista *X){ int i=0; element novi=PreviousL(EndL(X),X); if(FirstL(X)==EndL(X)) return 0; else while(1){ i++; if(FirstL(X)==novi) break; novi=PreviousL(novi,X); } return i; } void ispis_sort(elem sort[],lista *X){ for(int i=0;i<prebroji(X);i++){ cout<<"--------------------"<<endl <<"Naziv: "<<sort[i].naziv<<endl <<"Vrsta: "<<sort[i].vrsta<<endl <<"Cijena: "<<sort[i].cijena<<endl <<"Datum: "<<sort[i].datum<<endl <<"--------------------"<<endl; } } void spoji(elem sort[],int poc, int sre, int end){ elem *m=new elem [end-poc+1]; int I=poc,K=0,J=sre+1; while((I<=sre)&&(J<=end)) if(sort[I].cijena>sort[J].cijena) m[K++]=sort[I++]; else if(sort[I].cijena==sort[J].cijena) if(strcmp(sort[I].naziv,sort[J].naziv)==1) m[K++]=sort[I++]; else m[K++]=sort[J++]; else m[K++]=sort[J++]; if(I>sre) while(J<=end) m[K++]=sort[J++]; else while(I<=sre) m[K++]=sort[I++]; for(int I=0;I<=end-poc;I++) sort[I+poc]=m[I]; delete []m; } void merge_sortt(elem sort[],int poc, int end){ if(poc<end){ int sre=(poc+end)/2; merge_sortt(sort,poc,sre); merge_sortt(sort,sre+1,end); spoji(sort,poc,sre,end); } } void merge_sort(lista *X){ if(FirstL(X)==EndL(X)) cout<<endl<<"Lista je prazna"<<endl; else { elem *sort=new elem[prebroji(X)+1]; element novi=FirstL(X); int i=0; while(novi!=EndL(X)){ sort[i++]=RetreiveL(novi,X); novi=NextL(novi,X); } merge_sortt(sort,0,prebroji(X)-1); ispis_sort(sort,X); } } void ispis(elem e){ cout<<endl<<"--------------------"<<endl <<"Sifra zivotinje: "<<e.sifra<<endl <<"Naziv zivotinje: "<<e.naziv<<endl <<"Vrsta zivotinje: "<<e.vrsta<<endl <<"Cijena zivotinje: "<<e.cijena<<endl <<"Datum: "<<e.datum<<endl <<"--------------------"<<endl; } element ispis_1(lista *X){ elem e; element novi=PreviousL(EndL(X),X); if(FirstL(X)==EndL(X)) cout<<endl<<"Prazna lista"<<endl; else while(1){ e=RetreiveL(novi,X); ispis(e); if(FirstL(X)==novi) break; novi=PreviousL(novi,X); } } int provjera(elem e){ int god,dan,mje; char cgod[5],cmje[3],cdan[3]; for(int i=0;i<4;i++) cgod[i]=e.datum[i+6]; for(int i=0;i<2;i++) cmje[i]=e.datum[i+3]; for(int i=0;i<2;i++) cdan[i]=e.datum[i]; dan=atoi(cdan); mje=atoi(cmje); god=atoi(cgod); if(god>2012) return 1; else if(god==2012) if(mje>9) return 1; else if(mje==9) if(dan>23) return 1; else return 0; else return 0; else return 0; } void ispis_2012(lista *X){ if(EndL(X)==FirstL(X)) cout<<endl<<"Prazna lista"<<endl; else{ int br=0; element k=PreviousL(EndL(X),X); elem e; while(true){ e=RetreiveL(k,X); int p=provjera(e); if(p){ ispis(e); br++; } if(FirstL(X)==k) break; k=PreviousL(k,X); } cout<<endl<<"Ukupan broj zivotinje dostavljenih nakon 23.09.2012 iznosi: "<<br<<endl; } } int delete_poj(lista *x){ elem e; cin.ignore(); cout<<endl<<"Unesite naziv zivotinje koju zelite obrisati: "; cin.getline(e.naziv,35); e.sifra=-1; element p=LocateL(e,x); return DeleteL(p,x); } int delete_vrs(lista *X){ elem e; e.sifra=-2; cin.ignore(); cout<<endl<<"Unesite naziv vrste za brisanje: "; cin.getline(e.vrsta,35); element c; bool dalje=true; int prov=0; do{ c=LocateL(e,X); if(c==EndL(X))dalje=false; if(dalje) prov=DeleteL(c,X); }while(dalje==true); if(prov) return 1; else return 0; } int unos(elem e,lista *X){ cout<<endl<<"--------------------"<<endl <<"Unos zapisa"<<endl <<"Sifra zivotinje: "; e.sifra=si++; cout<<e.sifra<<endl; cin.ignore(); cout<<"Unesite vrstu zivotinje: "; cin.getline(e.vrsta,35); cout<<"Unesite naziv zivotinje: "; cin.getline(e.naziv,35); cout<<"Unesite cijenu zivotinje: "; cin>>e.cijena; cout<<"Unesite datum: "; cin.ignore(); cin.getline(e.datum,12); int p=InsertL(e,EndL(X),X); if(p==1) return 1; else return 0; } int main(){ lista *X=InitL(X); elem e; int izbor; do{ cout<<endl<<"Izbornik: "<<endl <<"1. Dodati zapis"<<endl <<"2. Ispis zivotinja (od posljednje dodane)"<<endl <<"3. Ispis i prebrojavanje zivotinja dostavljenih nakon 23.rujna 2012. te godine"<<endl <<"4. Brisanje pojedinacnog elementa prema nazivu"<<endl <<"5. Brisanje pojedine vrste"<<endl <<"6. Merge sort"<<endl <<"9. Izlaz iz programa"<<endl <<"--------------------"<<endl <<"Vas odabir: "; cin>>izbor; switch(izbor){ case 1: if(unos(e,X)) cout<<endl<<"Uspjesno uneseni podaci"<<endl; else cout<<endl<<"Podaci nisu uneseni"<<endl; break; case 2: ispis_1(X); break; case 3: ispis_2012(X); break; case 4: if(delete_poj(X)) cout<<endl<<"Zivotinja uspjesno izbrisana"<<endl; else cout<<endl<<"Brisanje nije uspjelo"<<endl; break; case 5: if(delete_vrs(X)) cout<<endl<<"Vrsta uspjesno izbrisana"<<endl; else cout<<endl<<"Brisanje nije uspjelo"<<endl; break; case 6: merge_sort(X); } }while(izbor!=9); return 0; }
You need to login to post a comment.
