/ Published in: C++
Evidencija životinja
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> #include "liste_poka.h" //#include "lista_polja.h" #include <string.h> #include <windows.h> using namespace std; void spoji_polja( z *polje[],int low,int mid,int high ) { int l,p,d,k; z*pom[1000]; l=low; p=low; d=mid+1; while( ( l<=mid )&&( d<=high ) ) { if( polje[l]->cijena>=polje[d]->cijena ) { pom[p]=polje[l]; l++; } else { pom[p]=polje[d]; d++; } p++; } if( l>mid ) { for( k=d; k<=high; k++ ) { pom[p]=polje[k]; p++; } } else { for( k=l; k<=mid; k++ ) { pom[p]=polje[k]; p++; } } for( k=low; k<=high; k++ ){ polje[k]=pom[k]; } } bool brisi_sve( t*list_head,int cetvrti_ili_peti) { bool obrisano=0; if(cetvrti_ili_peti==0){ cout<<"Naziv vrste-> "; } else{ cout<<"Naziv zivotinje-> "; } char naziv[40]; cin.ignore(); cin.getline( naziv,40 ); int br=NumberL( list_head ); z*trenutni; while(br>0) { trenutni=RetrieveL( br,list_head ); if(cetvrti_ili_peti==1) { if( !strcmp( trenutni->naziv,naziv ) ) { DeleteL( br,list_head ); br--; obrisano=1; } else{ br--; } } else { if( !strcmp( trenutni->vrsta,naziv ) ) { DeleteL( br,list_head ); br--; obrisano=1; } else{ br--; } } } return obrisano; } void pretraga( t*list_head ) { int br=NumberL( list_head ); z*kretanje_kroz_listu; int b=0; for( int i=1; i<=br; i++ ) { kretanje_kroz_listu=RetrieveL( i,list_head ); if( kretanje_kroz_listu->godina>2012 ) { cout<<"-----------------------"<<endl; cout<<"Sifra-> "<<kretanje_kroz_listu->sifra<<endl; cout<<"Vrsta-> "<<kretanje_kroz_listu->vrsta<<endl; cout<<"Naziv-> "<<kretanje_kroz_listu->naziv<<endl; cout<<"Datum-> "<<kretanje_kroz_listu->dan<<"."<<kretanje_kroz_listu->mjesec<<"."<<kretanje_kroz_listu->godina<<endl; cout<<"Cijena-> "<<kretanje_kroz_listu->cijena<<endl;; b++; } else if( kretanje_kroz_listu->godina==2012&&kretanje_kroz_listu->mjesec>9 ) { cout<<"-----------------------"<<endl; cout<<"Sifra-> "<<kretanje_kroz_listu->sifra<<endl; cout<<"Vrsta-> "<<kretanje_kroz_listu->vrsta<<endl; cout<<"Naziv-> "<<kretanje_kroz_listu->naziv<<endl; cout<<"Datum-> "<<kretanje_kroz_listu->dan<<"."<<kretanje_kroz_listu->mjesec<<"."<<kretanje_kroz_listu->godina<<endl; cout<<"Cijena-> "<<kretanje_kroz_listu->cijena<<endl; b++; } else if( kretanje_kroz_listu->godina==2012&&kretanje_kroz_listu->mjesec==9&&kretanje_kroz_listu->dan>23 ) { cout<<"-----------------------"<<endl; cout<<"Sifra-> "<<kretanje_kroz_listu->sifra<<endl; cout<<"Vrsta-> "<<kretanje_kroz_listu->vrsta<<endl; cout<<"Naziv-> "<<kretanje_kroz_listu->naziv<<endl; cout<<"Datum-> "<<kretanje_kroz_listu->dan<<"."<<kretanje_kroz_listu->mjesec<<"."<<kretanje_kroz_listu->godina<<endl; cout<<"Cijena-> "<<kretanje_kroz_listu->cijena<<endl; b++; } } cout<<"Broj zivotinja dostavljenih nakon 23. rujna 2012-> "<<b<<endl; } z*pomocni=new z; t*zadnji2=new t; int z_dodan=0; void mergesort( z *polje[], int low,int high ) { int mid; if( low<high ) { mid=( low+high )/2; mergesort( polje,low,mid ); // 4 mergesort( polje,mid+1,high ); spoji_polja( polje,low,mid,high ); } } void ispis_zivotinja( t*list_head ) { z*kretanje_kroz_listu; int br= NumberL( list_head ); cout<<"Ukupan broj zivotinja-> "<<br<<endl; if( z_dodan==0 ){ return; } for( int i=z_dodan; i<=br; i++ ) { kretanje_kroz_listu=RetrieveL( i,list_head ); cout<<"-----------------------"<<endl; cout<<"Sifra-> "<<kretanje_kroz_listu->sifra<<endl; cout<<"Vrsta-> "<<kretanje_kroz_listu->vrsta<<endl; cout<<"Naziv-> "<<kretanje_kroz_listu->naziv<<endl; cout<<"Datum-> "<<kretanje_kroz_listu->dan<<"."<<kretanje_kroz_listu->mjesec<<"."<<kretanje_kroz_listu->godina<<endl; cout<<"Cijena-> "<<kretanje_kroz_listu->cijena<<endl; } } void sortiraj( t*list_head ) { int br=NumberL( list_head ); z*polje[br]; for( int i=1; i<=br; i++ ){ polje[i-1]=RetrieveL( i,list_head ); } mergesort( polje,0,br-1 ); for( int i=0; i<br; i++ ) { cout<<"-----------------------"<<endl; cout<<"Sifra-> "<<polje[i]->sifra<<endl; cout<<"Vrsta-> "<<polje[i]->vrsta<<endl; cout<<"Naziv-> "<<polje[i]->naziv<<endl; cout<<"Datum-> "<<polje[i]->dan<<"."<<polje[i]->mjesec<<"."<<polje[i]->godina<<endl; cout<<"Cijena-> "<<polje[i]->cijena<<endl; } } bool dodaj_novu( t*list_head ) { int br=NumberL( list_head ); bool dodan=false; z*nova_zivotinja=new z; cout<<"Sifra-> "; cin>>nova_zivotinja->sifra; cout<<"Vrsta->"; cin>>nova_zivotinja->vrsta; cout<<"Naziv-> "; cin>>nova_zivotinja->naziv; cout<<"Cijena-> "; cin>>nova_zivotinja->cijena; cout<<"Dan dostave-> "; cin>>nova_zivotinja->dan; cout<<"Mjesec dostave-> "; cin>>nova_zivotinja->mjesec; cout<<"Godina dostave-> "; cin>>nova_zivotinja->godina; while( br>=0 ) { if( br==0 ) { InsertL( nova_zivotinja,0,list_head ); dodan=true; z_dodan=1; break; }//if pomocni=RetrieveL( br,list_head ); if( nova_zivotinja->sifra>pomocni->sifra ) { InsertL( nova_zivotinja,br,list_head ); dodan=true; z_dodan=br+1; break; }//if else{ br--; } }//while if( !dodan ){ return 0; } return 1; } int main() { t*list_head; list_head=InitL( list_head ); int izbor; do { cout<<"================================"<<endl; cout<<"Izbornik-> "<<endl; cout<<"1. Nova zivotinja"<<endl; cout<<"2. Ispis zivotinja"<<endl; cout<<"3. Pretraga"<<endl; cout<<"4. Brisanje prema nazivu"<<endl; cout<<"5. Brisanje prema vrsti"<<endl; cout<<"6. Sortiranje"<<endl; cout<<"10. Izlaz"<<endl; cin>>izbor; if(izbor==1) { int povratak=dodaj_novu(list_head); if(povratak){ cout<<"Dodan"<<endl; } else{ cout<<"Nije dodan"<<endl; } } if(izbor==2) ispis_zivotinja( list_head ); if(izbor==3) pretraga( list_head ); if(izbor==4) { int povratak= brisi_sve( list_head,1 ); if(povratak){ cout<<"Obrisan"<<endl; } else{ cout<<"Nije obrisan"<<endl; } } if(izbor==5) { int povratak= brisi_sve( list_head,0 ); if(povratak) { cout<<"Obrisan"<<endl; } else { cout<<"Nije obrisan"<<endl; } } if(izbor==6) sortiraj( list_head ); }//do while( izbor!=10 ); DeleteAll( list_head ); return 0; }