/ Published in: C++

Glavni program za zivotinje
Expand |
Embed | Plain Text
#include <iostream> #include <string> #include "lista_polja.cpp" using namespace std; zivotinje *provjera=new zivotinje; pzivotinje *zadnji=new pzivotinje; #define POCETAK 1 bool isEmpty( pzivotinje* ziv){ return FirstL(ziv) == EndL(ziv); } int dodavanje(pzivotinje *ziv){ int sifra = 0; if(isEmpty(ziv)) sifra = POCETAK; else{ sifra = RetrieveL(PreviousL(EndL(ziv),ziv),ziv).sifra+1; } zivotinje novo; cout <<"Nova zivotinja #" << sifra << endl; novo.sifra = sifra; cout << "Naziv: "; cin.ignore(); cin.getline(novo.naziv, 29, '\n'); cout << "Vrsta: "; cin.getline(novo.vrsta, 29, '\n'); cout << "Cijena: "; cin >> novo.cijena; if(novo.cijena < 0) return 0; cout << "Dan: "; cin >> novo.datum1.dan; if(novo.datum1.dan<1 || novo.datum1.dan>31) return 0; cout << "Mjesec: "; cin >> novo.datum1.mjesec; if(novo.datum1.mjesec<1 || novo.datum1.mjesec>12) return 0; cout << "Godina: "; cin >> novo.datum1.godina; if(novo.datum1.godina<1900) return 0; InsertL(novo,EndL(ziv),ziv); return 1; } void ispis(pzivotinje*glava){ el zadnji = EndL(glava); while(zadnji != FirstL(glava)){ zivotinje ziv = RetrieveL(PreviousL(zadnji,glava),glava); cout << "Sifra: " << ziv.sifra << endl; cout << "Naziv: " << ziv.naziv << endl; cout << "Vrsta: " << ziv.vrsta << endl; cout << "Cijena: " << ziv.cijena << endl; cout << "Datum dostave: " << ziv.datum1.dan<<"."<<ziv.datum1.mjesec << "." <<ziv.datum1.godina<<"."<<endl; cout <<endl; zadnji = PreviousL(zadnji,glava); } } void pretraga_zivotinje(int dan, int mjesec, int godina,pzivotinje*glava){ if(isEmpty(glava)){ cout << endl << "Broj pronadjenih zivotinja: 0" << endl; return; } int broj = 0; struct{ int dan, mjesec, godina; }datum; el tekuci = FirstL(glava); while(tekuci != EndL(glava)){ zivotinje ziv = RetrieveL(tekuci,glava); datum.dan = ziv.datum1.dan; datum.mjesec = ziv.datum1.mjesec; datum.godina = ziv.datum1.godina; if((datum.godina>godina) || ((datum.godina==godina)&&(datum.mjesec>mjesec)) || ((datum.godina==godina)&&(datum.mjesec==mjesec)) && (datum.dan>dan)){ broj++; cout << "Sifra: " << ziv.sifra << endl; cout << "Naziv: " << ziv.naziv << endl; cout << "Vrsta: " << ziv.vrsta << endl; cout << "Cijena: " << ziv.cijena << endl; cout << "Datum dostave: " << ziv.datum1.dan<<"."<<ziv.datum1.mjesec << "."<<ziv.datum1.godina<<"."<<endl; cout << endl; } tekuci = NextL(tekuci,glava); } cout << endl << "Broj pronadjenih zivotinja: " << broj << endl; } int brisanje(pzivotinje*glava){ cin.ignore(); char n[30]; cout << "Unesite naziv zivotinja za brisanje: "; cin.getline(n, 29, '\n'); el trenutni = FirstL(glava); bool ima_ga = false; while(trenutni != EndL(glava)){ zivotinje zivine = RetrieveL(trenutni,glava); if(strcmp(zivine.naziv,n)==0){ ima_ga = true; DeleteL(trenutni,glava); } trenutni = NextL(trenutni,glava); } if(!ima_ga) return 0; return 1; } int brisanje_vrsti(pzivotinje*glava){ cin.ignore(); char v[30]; cout << "Unesite vrsti zivotinja za brisanje: "; cin.getline(v, 29, '\n'); el trenutni = FirstL(glava); bool ima_ga = false; while(trenutni != EndL(glava)){ zivotinje zivine = RetrieveL(trenutni,glava); if(strcmp(zivine.vrsta,v)==0){ ima_ga = true; DeleteL(trenutni,glava); } trenutni = NextL(trenutni,glava); } if(!ima_ga) return 0; return 1; } void spoji(zivotinje *polje,int donji,int sredina,int gornji){ int h,i,j,k; h=donji; i=donji; j=sredina+1; zivotinje *temp = new zivotinje[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(zivotinje *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 sortiraj(pzivotinje *glava){ int broj=0; el trenutni = FirstL(glava); while(trenutni != EndL(glava)){ cout << "pas"; broj++; trenutni = NextL(trenutni,glava); } zivotinje* polje = new zivotinje[broj]; trenutni = FirstL(glava); int i = 0; while(trenutni != EndL(glava)){ polje[i] = RetrieveL(trenutni,glava); trenutni = NextL(trenutni,glava); i++; } mergesort(polje,0,broj-1); DeleteallL(glava); glava=NULL; glava = InitL(glava); cout << broj << endl; cout << "SORTIRANO SILAZNO PREMA CIJENI I NAZIVU" << endl; for( i = 0; i < broj; i++){ InsertL(polje[i],EndL(glava),glava); zivotinje ziv = polje[i]; cout << "Sifra: " << ziv.sifra << endl; cout << "Naziv: " << ziv.naziv << endl; cout << "Vrsta: " << ziv.vrsta << endl; cout << "Cijena: " << ziv.cijena << endl; cout << "Datum dostave: " << ziv.datum1.dan<<"."<<ziv.datum1.mjesec << "."<<ziv.datum1.godina<<"."<<endl; cout <<endl; } } int main(){ int odabir; lista* glava=NULL; glava=InitL(glava); do{ cout << "==================================="<< endl; cout << "1.Dodavanje zapisa u listu prema rastucoj sifri zivotina"<< endl; cout << "2.Pretraga liste i ispis svih zivotinja od 23. rujna 2012." << endl; cout << "3.Brisanje pojedina��ne unose prema nazivu zivotinje" << endl; cout << "4.Brisanje vrste zivotinje" << endl; cout << "5.Silazno sortirati sadr�¾aj liste prema prema cijeni i nazivu" << endl; cout << "6.Ispis podataka" << endl; cout << "9.Izlaz iz programa" << endl; cout << "==================================="<<endl; cout << "Unesite svoj odabir: " ; cin >> odabir; switch(odabir){ case 1: dodavanje(glava); break; case 2: pretraga_zivotinje(23,9,2012,glava); break; case 3: brisanje(glava); break; case 4: brisanje_vrsti(glava); break; case 5: sortiraj(glava); break; case 6: cout<< " Ispis " << endl; ispis(glava); break; } } while(odabir!=9); cout << "Kraj programa. " << endl; system("Pause"); return 0; }
Comments

You need to login to post a comment.
Ovaj program mi se svidio zato jer je funkcionalan i dosta je sliÄan mojem kodu u glavnom programu.