/ Published in: C++
URL: http://e.foi.hr/wiki/strukture_podataka/index.php?title=Zadatak_1_Krsnik_Natalija&action=submit
Glavni program,zadatak1
Expand |
Embed | Plain Text
#include <iostream> //#include "biblioteka_pokazivaci.h" #include "biblioteka_polja.h" #include <string.h> #include <windows.h> using namespace std;//---------------------------------------------------- ziv*UnosL( ziv*novi ) { cout<<"Sifra= "; cin>>novi->sifra; cout<<"Vrsta= "; cin>>novi->vrsta; cout<<"Naziv= "; cin>>novi->naziv; cout<<"Cijena= "; cin>>novi->cijena; cout<<"Dan dostave= "; cin>>novi->dan; cout<<"Mjesec dostave= "; cin>>novi->mjesec; cout<<"Godina dostave= "; cin>>novi->godina; }//---------------------------------------------------- ziv*IspisL( ziv*novi ) { cout<<"-----------------------"<<endl; cout<<"Sifra= "<<novi->sifra<<endl; cout<<"Vrsta= "<<novi->vrsta<<endl; cout<<"Naziv= "<<novi->naziv<<endl; cout<<"Datum= "<<novi->dan<<"."<<novi->mjesec<<"."<<novi->godina<<endl; cout<<"Cijena= "<<novi->cijena<<endl; }//---------------------------------------------------- void pretraga( tlist*g ) { int br=NumberL( g ); ziv*tekuci; int brojac_dostavljenih=0; for( int i=1; i<=br; i++ ) { tekuci=RetrieveL( i,g ); if( tekuci->godina>2012 ) { IspisL( tekuci ); brojac_dostavljenih++; } else if( tekuci->godina==2012&&tekuci->mjesec>9 ) { IspisL( tekuci ); brojac_dostavljenih++; } else if( tekuci->godina==2012&&tekuci->mjesec==9&&tekuci->dan>23 ) { IspisL( tekuci ); brojac_dostavljenih++; } } cout<<"Broj zivotinja dostavljenih nakon 23. rujna 2012: "<<brojac_dostavljenih<<endl; }//---------------------------------------------------- ziv*pomocni=new ziv; tlist*zadnji2=new tlist; int z_dodan=0; bool brisi_sve( tlist*g,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( g ); ziv*trenutni; while(br>0) { trenutni=RetrieveL( br,g ); if(cetvrti_ili_peti==1) { if( !strcmp( trenutni->naziv,naziv ) ) { DeleteL( br,g ); br--; obrisano=1; } else br--; } else { if( !strcmp( trenutni->vrsta,naziv ) ) { DeleteL( br,g ); br--; obrisano=1; } else br--; } } return obrisano; }//---------------------------------------------------- void spoji_polja( ziv *polje[],int low,int mid,int high ) { int l,p,d,k; ziv*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]; }//---------------------------------------------------- void mergesort( ziv *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 izbornik() { 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<<"0. Izlaz"<<endl; }//---------------------------------------------------- void ispis_zivotinja( tlist*g ) { ziv*tekuci; int br= NumberL( g ); cout<<"Ukupan broj zivotinja: "<<br<<endl; if( z_dodan==0 ) return; for( int i=z_dodan; i<=br; i++ ) { tekuci=RetrieveL( i,g ); IspisL( tekuci ); } }//---------------------------------------------------- void sortiraj( tlist*g ) { int br=NumberL( g ); ziv*polje[br]; for( int i=1; i<=br; i++ ) polje[i-1]=RetrieveL( i,g ); mergesort( polje,0,br-1 ); for( int i=0; i<br; i++ ) IspisL( polje[i] ); }//---------------------------------------------------- bool dodaj_novu( tlist*g ) { int br=NumberL( g ); bool dodan=false; ziv*nova_zivotinja=new ziv; UnosL( nova_zivotinja ); while( br>=0 ) { if( br==0 ) { InsertL( nova_zivotinja,0,g ); dodan=true; z_dodan=1; break; }//if pomocni=RetrieveL( br,g ); if( nova_zivotinja->sifra>pomocni->sifra ) { InsertL( nova_zivotinja,br,g ); dodan=true; z_dodan=br+1; break; }//if else br--; }//while if( !dodan )return 0; return 1; }//---------------------------------------------------- int main() { tlist*g; g=InitL( g ); int izbor; do { izbornik(); cin>>izbor; system("cls"); if(izbor==1) { if(dodaj_novu(g)==1)cout<<"Dodan element"<<endl; else cout<<"Nije dodan element"<<endl; } else if(izbor==2) ispis_zivotinja( g ); else if(izbor==3) pretraga( g ); else if(izbor==4) { if( brisi_sve( g,1 )==1 )cout<<"Obrisan element"<<endl; else cout<<"Nije obrisan element"<<endl; } else if(izbor==5) { if( brisi_sve( g,0 )==1 ) cout<<"Obrisan element"<<endl; else cout<<"Nije obrisan element"<<endl; } else if(izbor==6) sortiraj( g ); system( "pause" ); system( "cls" ); } while( izbor!=0 ); DeleteAll( g ); return 0; }
You need to login to post a comment.
