/ Published in: C++
program napisan u c++.
Expand |
Embed | Plain Text
#include <iostream> #include <cstring> #include "polja.h" //#include "pokazivac.h" using namespace std; int nova(){ elem a; a.sifra=sifra++; cout<<"Vrsta: "; cin.ignore(); cin.getline(a.vrsta,30); cout<<"Naziv: "; cin.getline(a.naziv,30); cout<<"Cijena: ";cin>>a.cijena; if(a.cijena<=0) {sifra--; return 0;} cout<<"Unesite datum dostave:"; cout<<"Dan: ";cin>>a.datum.dan; if(a.datum.dan<=0||a.datum.dan>31) {sifra--; return 0;} cout<<"Mjesec: "; cin.ignore(); cin.getline(a.datum.mjesec,15); cout<<"Godina: ";cin>>a.datum.godina; if(a.datum.godina<1900||a.datum.godina>2013) {sifra--; return 0;} InsertL(a,br_elem,lista); br_elem++; return 1; } void ispis_p(){ elem a; int b=0; int p = PreviousL(EndL(lista),lista); while(b<br_elem){ a=RetrieveL(p,lista); cout<<"Sifra: "<<a.sifra<<endl <<"Vrsta: "<<a.vrsta<<endl <<"Naziv: "<<a.naziv<<endl <<"Cijena: "<<a.cijena<<endl <<"Datum: "<<a.datum.dan<<"."<<a.datum.mjesec<<"."<<a.datum.godina<<endl <<endl; p = PreviousL(p,lista); b++; } } void ispis_d(){ elem a; int br=0; int po = FirstL(lista); while(po!=EndL(lista)) { a = RetrieveL(po,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 <<"Vrsta: "<<a.vrsta<<endl <<"Naziv: "<<a.naziv<<endl <<"Cijena: "<<a.cijena<<endl <<"Datum: "<<a.datum.dan<<"."<<a.datum.mjesec<<"."<<a.datum.godina<<endl <<endl; } po=NextL(po,lista); } cout<<"Broj zivotinja: "<<br<<endl<<endl; } int brisi(){ char naziv[30]; cout<<"Unesite naziv zivotinje: "; cin.ignore(); cin.getline(naziv,30); int p = LocateL(naziv,lista); if(p==EndL(lista)) return 0; else { DeleteL(p,lista); br_elem--; return 1;} } int brisi_vrsta(){ char vrsta[30]; int p; bool obrisan=0; v=1; cout<<"Unesite vrstu zivotinje: "; cin.ignore(); cin.getline(vrsta,30); 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 <<"Vrsta: "<<a.vrsta<<endl <<"Naziv: "<<a.naziv<<endl <<"Cijena: "<<a.cijena<<endl <<"Datum: "<<a.datum.dan<<"."<<a.datum.mjesec<<"."<<a.datum.godina<<endl; p = NextL(p,lista); } } void spoji(int a, int c, int b){ int d=a, g=c+1, n=0; elem *e = new elem [b-a+1]; elem prvi,drugi; while(d<=c && g<=b){ prvi=RetrieveL(d,lista); drugi=RetrieveL(g,lista); if(prvi.cijena > drugi.cijena) { e[n++]=prvi; d++; } else if(prvi.cijena < drugi.cijena){ e[n++]=drugi; g++; } } if(d>c) while(g<=b) { drugi=RetrieveL(g,lista); e[n++] = drugi; g++; } else while(d<=c) { prvi=RetrieveL(d,lista); e[n++] = prvi; d++; } for(int i=0;i<=b-a;i++) Vrati(e[i],a+i,lista); delete [] e; } void sort(int a, int b) { if(a<b) { int c=(a+b)/2; sort(a,c); sort(c+1,b); spoji(a,c,b); } } int main() { int izbor; InitL(lista); do { cout<<"1. Upis nove zivotinju"<<endl; cout<<"2. Ispis "<<endl; cout<<"3. Ispis zivotinja nakon 23. rujna 2012."<<endl; cout<<"4. Brisanje zivotinje(po nazivu)"<<endl; cout<<"5. Brisanje po vrsti"<<endl; cout<<"6. Silazno sortiranje po cijeni (ili nazivu)"<<endl; cout<<"7. Izlaz"<<endl; cin>>izbor; switch(izbor) { case 1: if(nova()) cout<<"Upisano!"<<endl; else cout<<"Pogresan unos!"<<endl;break; case 2:ispis_p();break; case 3:ispis_d();break; case 4: if(brisi()) { cout<<"Obrisano"<<endl; ispis(); } else cout<<"Pogresan podatak ili zapis ne postoji"<<endl;break; case 5: if(brisi_vrsta()) { cout<<"Obrisano"<<endl; ispis();} else cout<<"Pogresan podatak ili zapis ne postoji"<<endl;break; case 6: sort(0,br_elem-1); ispis(); break; case 7: break; default: cout<<"Pogresan unos"<<endl;break; } }while(izbor!=7); DeleteAll(lista); system("pause"); return 0; }
You need to login to post a comment.
