/ Published in: C++
main dio programa za prvi zadatak
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> #include <cstring> #include "lista_polje.h" //#include "lista_pokazivac.h" using namespace std; int unos() { zapis novi; novi.sifra=sifra++; cout<<"Vrsta: "; cin.ignore(); cin.getline(novi.vrsta,20); cout<<"Naziv: "; cin.getline(novi.naziv,20); cout<<"Cijena: ";cin>>novi.cijena; if(novi.cijena<=0) {sifra--;return 0;} cout<<"Datum dostave zivotinje"<<endl; cout<<"Dan: ";cin>>novi.datum.d; if(novi.datum.d<=0||novi.datum.d>31) {sifra--;return 0;} cout<<"Mjesec: "; cin>>novi.datum.m; if(novi.datum.m<=0||novi.datum.m>12) {sifra--;return 0;} cout<<"Godina: ";cin>>novi.datum.g; if(novi.datum.g<1990||novi.datum.g>2012) {sifra--;return 0;} InsertL(novi,n,L); n++; return 1; } void ispis_silaz() { zapis h; int k=0; int p = PreviousL(EndL(L),L); while(k<n){ h=RetrieveL(p,L); cout<<"Sifra: "<<h.sifra<<endl; cout<<"Vrsta: "<<h.vrsta<<endl; cout<<"Naziv: "<<h.naziv<<endl; cout<<"Cijena: "<<h.cijena<<endl; cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl; cout<<"-------------------------------"<<endl; p = PreviousL(p,L); k++; } } void ispis_datum() { int k=0; zapis h; int p = FirstL(L); while(p!=EndL(L)) { h = RetrieveL(p,L); if(h.datum.g=2012 && h.datum.m>=9 && h.datum.d>=23) { k++; cout<<"Sifra: "<<h.sifra<<endl; cout<<"Vrsta: "<<h.vrsta<<endl; cout<<"Naziv: "<<h.naziv<<endl; cout<<"Cijena: "<<h.cijena<<endl; cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl; cout<<"------------------------------"<<endl; } if(h.datum.g=2012 && h.datum.m>9) { k++; cout<<"Sifra: "<<h.sifra<<endl; cout<<"Vrsta: "<<h.vrsta<<endl; cout<<"Naziv: "<<h.naziv<<endl; cout<<"Cijena: "<<h.cijena<<endl; cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl; cout<<"------------------------------"<<endl; } p = NextL(p,L); } cout<<"Broj pronadjenih zivotinja: "<<k<<endl<<endl; } int brisi_naziv() { char naziv[20]; cout<<"Unesite naziv zivotinje: "; cin.ignore(); cin.getline(naziv,20); int p = LocateL(naziv, L); if(p==EndL(L))return 0; else { DeleteL(p,L); n--; return 1; } } int brisi_vrsta() { char vrsta[20]; int p; bool gotovo=0; cout<<"Unesite vrstu zivotinje: "; cin.ignore(); cin.getline(vrsta,20); while (LocateL(vrsta,L)!=EndL(L)) { p = LocateL(vrsta,L); DeleteL(p,L); n--; gotovo=1; } if(!gotovo) return 0; else return 1; } void ispis() { zapis h; int p=FirstL(L); while (p!=EndL(L)){ h=RetrieveL(p,L); cout<<"Sifra: "<<h.sifra<<endl; cout<<"Vrsta: "<<h.vrsta<<endl; cout<<"Naziv: "<<h.naziv<<endl; cout<<"Cijena: "<<h.cijena<<endl; cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl; cout<<"-------------------------------"<<endl; p = NextL(p,L); } } void spoji(int i, int k, int j) { int I=i, J=k+1, K=0; zapis *b = new zapis[j-i+1]; zapis prvi,drugi; while(I<=k && J<=j){ prvi=RetrieveL(I,L); drugi=RetrieveL(J,L); if(prvi.cijena > drugi.cijena) { b[K++]=prvi; I++; } else if(prvi.cijena < drugi.cijena){ b[K++]=drugi; J++; } else if(strcmp(prvi.naziv,drugi.naziv)==-1) { b[K++]=drugi; J++; } else { b[K++]=prvi; I++; } } if(I>k) while(J<=j) { drugi=RetrieveL(J,L); b[K++] = drugi; J++; } else while(I<=k) { prvi=RetrieveL(I,L); b[K++] = prvi; I++; } for(int I=0;I<=j-i;I++) L.podaci[i+I]=b[I]; delete [] b; } void msort(int i, int j) { if(i<j) { int k=(i+j)/2; msort(i,k); msort(k+1,j); spoji(i,k,j); } } void msort() { msort(0,n-1); } int main() { int izbor; InitL(L); do { cout<<"1. Unos nove zivotinje"<<endl; cout<<"2. Ispis zivotinja od zadnjeg unosa prema prvom"<<endl; cout<<"3. Ispis zivotinja dodanih nakon 23. 09. 2012."<<endl; cout<<"4. Brisanje zivotinje unosom naziva"<<endl; cout<<"5. Brisanje cijele vrste zivotinja"<<endl; cout<<"6. Silazno merge sortiranje, po cijeni"<<endl; cout<<"0. Izlaz"<<endl; cin>>izbor; switch(izbor) { case 1: if(unos())cout<<"Zapisano je."<<endl; else cout<<"Krivi unos"<<endl; break; case 2: ispis_silaz(); cout<<endl; break; case 3: ispis_datum(); cout<<endl; break; case 4: if(brisi_naziv()) { cout<<"Uspjesno obrisano."<<endl; ispis(); } else cout<<"Neuspjeh. Krivi naziv ili takav naziv ne postoji"<<endl; break; case 5: if(brisi_vrsta()) { cout<<"Uspjesno obrisano."<<endl; ispis(); } else cout<<"Neuspjeh. Krivo ime vrste ili takva vrsta ne postoji"; break; case 6: msort(); ispis(); cout<<endl; break; } }while(izbor!=0); system("pause"); return 0; }