/ Published in: C++
Program koji evidentira zivotinje u trgovini kucnim ljubimcima.
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> #include "lista_polje.h" //#include "lista_pokazivac.h" using namespace std; int sifra=10000; int Dodavanje_zapisa_o_zivotinji(lista *L) { Zivotinja x; int rezultat; system("cls"); cout << " Sifra zivotinje: "<< sifra << endl; x.sifra=sifra++; cout << " Unesite vrstu zivotinje: "; cin.ignore(); cin.getline(x.vrsta, 30); cout << " Unesite naziv zivotinje: "; cin.getline(x.naziv, 30); cout << " Unesite cijenu zivotinje (kn): "; cin >> x.cijena; cout << " Unesite datum kada je zivotinja dostavljena (dan, mjesec, godina): \n"; cout << "Unesite dan: "; cin >> x.datum_dostave.dan; if(x.datum_dostave.dan<1||x.datum_dostave.dan>31) return 0; cout << "Unesite mjesec: "; cin >> x.datum_dostave.mjesec; if(x.datum_dostave.mjesec<1||x.datum_dostave.mjesec>12) return 0; cout<< "Unesite godinu: "; cin >> x.datum_dostave.godina; if(x.datum_dostave.godina<2000) return 0; rezultat=InsertL(x, EndL(L), L); if(rezultat) return 1; else return 0; } void Ispis_silazno(lista *L) { system("cls"); element tekuci=PreviousL(EndL(L), L); if(FirstL(L)==EndL(L)) { system("pause"); return; } while(1) { Zivotinja x=RetreiveL(tekuci, L); cout << "====================================\n"; cout << " Sifra zivotinje: "<< x.sifra<< endl; cout << " Vrsta zivotinje: "<< x.vrsta<< endl; cout << " Naziv zivotinje: "<< x.naziv<< endl; cout << " Cijena zivotinje: "<< x.cijena<< endl; cout << " Datum dostave zivotinje: "<< x.datum_dostave.dan<< "/"<< x.datum_dostave.mjesec<< "/"<< x.datum_dostave.godina<< " "<< endl; cout << "====================================\n"; if(tekuci==FirstL(L)) break; tekuci=PreviousL(tekuci, L); } system("pause"); } void Ispis_nakon_23_rujna_2012(int dan, int mjesec, int godina, lista *L) { element tekuci=FirstL(L); system("cls"); if(FirstL(L)==EndL(L)) { system("pause"); return; } struct { int dan, mjesec, godina; }dat_dost; while(1) { Zivotinja x=RetreiveL(tekuci, L); dat_dost.dan=x.datum_dostave.dan; dat_dost.mjesec=x.datum_dostave.mjesec; dat_dost.godina=x.datum_dostave.godina; if((dat_dost.godina>godina)||((dat_dost.godina==godina)&&(dat_dost.mjesec>mjesec))||((dat_dost.godina==godina)&&(dat_dost.mjesec==mjesec))&&(dat_dost.dan>dan)) { cout << "===================================\n"; cout << " Sifra zivotinje: "<< x.sifra<< endl; cout << " Vrsta zivotinje: "<< x.vrsta<< endl; cout << " Naziv zivotinje: "<< x.naziv<< endl; cout << " Cijena zivotinje: "<< x.cijena<< endl; cout << " Datum dostave zivotinje: "<<x.datum_dostave.dan<< "/"<< x.datum_dostave.mjesec<< "/"<< x.datum_dostave.godina<< " "<< endl; cout << "===================================\n"; } if(tekuci==PreviousL(EndL(L), L)) break; tekuci=NextL(tekuci, L); } system("pause"); } int Brisanje_pojedinacnih_naziva(lista *L) { system("cls"); char naziv[30]; cout << " Unesite naziv zivotinje cije podatke zelite izbrisati: "; cin.ignore(); cin.getline(naziv, 30); if(FirstL(L)==EndL(L)) { system("pause"); return 0; } element tekuci=FirstL(L); bool poznat=false; while(tekuci!=EndL(L)) { Zivotinja x=RetreiveL(tekuci, L); if(strcmp(x.naziv, naziv)==0) { poznat=true; break; } tekuci=NextL(tekuci, L); } if(poznat) { DeleteL(tekuci, L); } else return 0; return 1; } int Brisanje_svih_zivotinja_odabrane_vrste(lista *L) { system("cls"); char vrsta[30]; cout << "Unesite vrstu zivotinje cije podate zelite izbrisati: "; cin.ignore(); cin.getline(vrsta, 30); element tekuci=FirstL(L); bool poznat=false; while(tekuci!=EndL(L)) { Zivotinja x=RetreiveL(tekuci, L); if(strcmp(x.vrsta, vrsta)==0) { poznat=true; DeleteL(tekuci, L); } tekuci=NextL(tekuci, L); } if(!poznat) return 0; return 1; } void spajanje(Zivotinja *polje,int donji,int sredina,int gornji) { int h,i,j,k; h=donji; i=donji; j=sredina+1; Zivotinja *pom = new Zivotinja[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))) { pom[i]=polje[h]; h++; } else { pom[i]=polje[j]; j++; } i++; } if(h>sredina) { for(k=j; k<=gornji; k++) { pom[i]=polje[k]; i++; } } else { for(k=h; k<=sredina; k++) { pom[i]=polje[k]; i++; } } for(k=donji; k<=gornji; k++) polje[k]=pom[k]; delete [] pom; } void Mergesort(Zivotinja *polje, int donji,int gornji ) { int sredina; if(donji<gornji) { sredina=(donji+gornji)/2; Mergesort(polje,donji,sredina); Mergesort(polje,sredina+1,gornji); spajanje(polje,donji,sredina,gornji); } } void Sortiranje_cijena_naziv(lista *L){ int broj=0; element tekuci = FirstL(L); while(tekuci != EndL(L)){ broj++; tekuci = NextL(tekuci,L); } Zivotinja* polje = new Zivotinja[broj]; tekuci = FirstL(L); int i = 0; while(tekuci!=EndL(L)){ polje[i] = RetreiveL(tekuci, L); tekuci = NextL(tekuci,L); i++; } Mergesort(polje,0,broj-1); DeleteAllL(L); L=NULL; L=InitL(L); for( i = 0; i < broj; i++){ InsertL(polje[i],EndL(L),L); Zivotinja x=polje[i]; cout << "============================\n"; cout << " Sifra zivotinje: "<< x.sifra<< endl; cout << " Vrsta zivotinje: "<< x.vrsta<< endl; cout << " Naziv zivotinje: "<< x.naziv<< endl; cout << "Cijena zivotinje: "<< x.cijena<< endl; cout << "Datum dostave zivotinje: "<< x.datum_dostave.dan<<"/"<<x.datum_dostave.mjesec << "/"<<x.datum_dostave.godina<<" "<< endl; cout <<"=============================\n"; } system("pause"); } int main() { lista *L=NULL; L=InitL(L); int izbor=0; do { system("cls"); cout << "===========================================================\n"; cout << "\n IZBORNIK S MOGUCNOSTIMA \n"; cout << "===========================================================\n"; cout << " 1. Dodavanje zapisa o zivotinji\n"; cout << " 2. Ispis liste (silazno prema sifri zivotinje)\n"; cout << " 3. Ispis zivotinja dostavljenih nakon 23. rujna 2012.\n"; cout << " 4. Brisanje pojedinacnih unosa (prema nazivu zivotinje)\n"; cout << " 5. Brisanje svih zivotinja odabrane vrste\n"; cout << " 6. Sortiranje liste prema cijeni i nazivu zivotinje\n"; cout << " 7. Izlaz iz programa\n"; cout << "\n\n Vas izbor je: \n"; cin >> izbor; switch(izbor) { case 1: Dodavanje_zapisa_o_zivotinji(L); break; case 2: Ispis_silazno(L); break; case 3: Ispis_nakon_23_rujna_2012(23, 9, 2012, L); break; case 4: Brisanje_pojedinacnih_naziva(L); break; case 5: Brisanje_svih_zivotinja_odabrane_vrste(L); break; case 6: Sortiranje_cijena_naziv(L); break; case 7: break; } } while(izbor!=7); DeleteAllL(L); return 0; }