/ Published in: C++
Ovo je glavni program u kojem ukljucujem određenu biblioteku ovisno o tome koju implementaciju zelim. Ako zelim implementaciju liste pomocu pokazivaca tada cu ovaj drugi header odnosno pozivanje tog headere staviti pod komentare i obrnuto.
Expand |
Embed | Plain Text
#include <iostream> #include "i_pokazivaci.h" //#include "i_polje.h" using namespace std; int brojac=0; int dodavanje(tlista *glava){ tzivotinja unos; brojac+=1; unos.sifra=brojac; cout << "Sifra: " << unos.sifra << endl; cout << "Vrsta: "; cin.ignore(); cin.getline(unos.vrsta,30); cout << "Naziv: "; cin.getline(unos.naziv,30); cout << "Cijena: "; cin >> unos.cijena; cout << "Datum(format: GGGGMMDD): "; cin >> unos.datum; cout << endl; if(unos.datum<19900101 || unos.datum>20501231){ brojac--; return 0;} InsertL(unos,EndL(glava),glava); return 1; } void ispis(tlista *glava){ if(glava->sljedeci==0) {cout<<"Lista je prazna!"<<endl << endl ;return ;} tzivotinja zivotinje[1000]; el i=FirstL(glava); int brojac=0; while(i!=EndL(glava)){ zivotinje[brojac]=RetreiveL(i,glava); i=NextL(i,glava); brojac++; } for(int i=brojac-1;i>=0;i--){ cout<<endl; cout<<"Sifra: "<<zivotinje[i].sifra<<endl; cout<<"Vrsta: "<<zivotinje[i].vrsta<<endl; cout<<"Naziv: "<<zivotinje[i].naziv<<endl; cout<<"Cijena: "<<zivotinje[i].cijena<<endl; cout<<"Datum: "<<zivotinje[i].datum<<endl << endl; } }; void pretrazivanje(tlista *glava){ el i=FirstL(glava); int brojac=0; tzivotinja zivotinja; cout<<"Zivotinje dostavljene nakon 23. rujna, 2012. "<<endl; while(i!=EndL(glava)){ zivotinja=RetreiveL(i,glava); if(zivotinja.datum>20120923){ cout<<endl; cout<<"sifra: "<<zivotinja.sifra<<endl; cout<<"vrsta: "<<zivotinja.vrsta<<endl; cout<<"naziv: "<<zivotinja.naziv<<endl; cout<<"cijena: "<<zivotinja.cijena<<endl; cout<<"datum: "<<zivotinja.datum<<endl; brojac++;} i=NextL(i,glava);} cout<<endl; cout<<"Broj zivotinja dostavljenih nakon 23. rujna, 2012: "<<brojac<<endl<<endl; }; int brisanje_zivotinje(tlista *glava){ char unos[30]; cout << "Unesite naziv zivotinje koju hocete obrisati: "; cin.ignore(); cin.getline(unos,30); el i=FirstL(glava),brisi; tzivotinja zivotinja; while(i!=EndL(glava)){ brisi=LocateL(unos,glava); if(brisi==EndL(glava)) {return 0;} zivotinja=RetreiveL(brisi,glava); if(strcmp(zivotinja.naziv,unos)==0){ cout<<endl; cout<<"Obrisana je sljedeca zivotinja: "<<endl; cout<<"sifra: "<<zivotinja.sifra<<endl; cout<<"vrsta: "<<zivotinja.vrsta<<endl; cout<<"naziv: "<<zivotinja.naziv<<endl; cout<<"cijena: "<<zivotinja.cijena<<endl; cout<<"datum: "<<zivotinja.datum<<endl; DeleteL(brisi,glava); return 1;} i=NextL(i,glava);} return 0; }; int brisanje_vrste(tlista *glava){ char unos[30]; cout << "Unesite vrstu zivotinje koju hocete obrisati: "; cin.ignore(); cin.getline(unos,30); el i=FirstL(glava),brisi; tzivotinja zivotinja; int uspjeh; while(i!=EndL(glava)){ brisi=LocateL(unos,glava); if(brisi==EndL(glava)) {goto kraj;} zivotinja=RetreiveL(brisi,glava); if(strcmp(zivotinja.vrsta,unos)==0){ cout<<endl; cout<<"Obrisana je sljedeca zivotinja: "<<endl; cout<<"sifra: "<<zivotinja.sifra<<endl; cout<<"vrsta: "<<zivotinja.vrsta<<endl; cout<<"naziv: "<<zivotinja.naziv<<endl; cout<<"cijena: "<<zivotinja.cijena<<endl; cout<<"datum: "<<zivotinja.datum<<endl; DeleteL(brisi,glava); uspjeh=1; } i=NextL(i,glava);} kraj: if(uspjeh==1)return 1; else return 0; }; void spoji(tzivotinja *polje,int donji,int sredina,int gornji) { int h,i,j,k; h=donji; i=donji; j=sredina+1; tzivotinja *temp = new tzivotinja[gornji-donji+1]; while((h<=sredina)&&(j<=gornji)) { if(polje[h].cijena>polje[j].cijena || ((polje[h].cijena==polje[j].cijena)&&(strcmp(polje[h].naziv, polje[j].naziv)>0))) { temp[i]=polje[h]; h++; } else { temp[i]=polje[j]; j++; } i++; } if(h>sredina) { for(k=j; k<=gornji; k++) { temp[i]=polje[k]; i++; } } else { for(k=h; k<=sredina; k++) { temp[i]=polje[k]; i++; } } for(k=donji; k<=gornji; k++) polje[k]=temp[k]; delete [] temp; } void mergesort(tzivotinja *polje, int donji,int gornji ) { int sredina; if(donji<gornji) { sredina=(donji+gornji)/2; mergesort(polje,donji,sredina); mergesort(polje,sredina+1,gornji); spoji(polje,donji,sredina,gornji); } } void sortiranje(tlista *glava){ int broj=0; el tekuci = FirstL(glava); while(tekuci != EndL(glava)){ broj++; tekuci = NextL(tekuci,glava); } tzivotinja* polje = new tzivotinja[broj]; tekuci = FirstL(glava); int i = 0; while(tekuci != EndL(glava)){ polje[i] = RetreiveL(tekuci,glava); tekuci = NextL(tekuci,glava); i++; } mergesort(polje,0,broj-1); DeleteAllL(glava); glava=new tlista; InitL(glava); cout << "Sortirani ispis:" << endl; for( i = 0; i < broj; i++){ InsertL(polje[i],EndL(glava),glava); tzivotinja zivotinja = polje[i]; cout << "Sifra: " << zivotinja.sifra << endl; cout << "Naziv: " << zivotinja.naziv << endl; cout << "Vrsta: " << zivotinja.vrsta << endl; cout << "Cijena: " << zivotinja.cijena << endl; cout << "Datum dostave: " << zivotinja.datum << endl; cout << endl; } } int main(){ tlista *glava; glava=new tlista; InitL(glava); int izbor; do{ cout << " ||Evidencija zivotinja|| " << endl; cout << "1.Dodavanje zapisa prema rastucoj sifri" << endl; cout << "2.Ispis od posljedne dodane sifre!" << endl; cout << "3.Ispis zivotinja dostavljenih nakon 23.09.2012. " << endl; cout << "4.Brisanje pojedinacnog unosa prema nazivu zivotinje " << endl; cout << "5.Brisanje svih zivotinja odabrane vrste " << endl; cout << "6.Sortiranje prema cijeni i nazivu " << endl; cout << "9.Izlaz iz programa!" << endl; cout << "-------------------------------" << endl; cout << "Vas odabir: "; cin >> izbor; switch(izbor){ case 1: if(dodavanje(glava)) cout << "Uspjesan zapis!" << endl; else cout << "Neuspjesan zapis!" << endl; break; case 2: ispis(glava); break; case 3: pretrazivanje(glava); break; case 4: if(brisanje_zivotinje(glava)) cout << "Uspjesno obrisano!" << endl; else cout << "Neuspjesno!" << endl; break; case 5: if(brisanje_vrste(glava)) cout << "Uspjesno obrisani!" << endl; else cout << "Neuspjesno!" << endl; break; case 6: sortiranje(glava); break; } }while(izbor!=9); system("Pause"); return 0; }
You need to login to post a comment.
