/ Published in: C++
Ovo je main funkcija koja sadrzi izbornik koji se sastoji od raznih mogunosti poput: Dodavanja, brisanja, sortiranja i pretrazivanja zivotinja koje se nalaze u listi.
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> //#include "pokazivaci.h" #include "polja.h" #include <string.h> #include <windows.h> using namespace std; void pretraga( sve_zivotinje*glava_liste ) { int brojac=NumberL( glava_liste ); jedna_zivotinja*tekuci; int brojac_dostavljenih=0; for( int i=1; i<=brojac; i++ ) { tekuci=RetrieveL( i,glava_liste ); 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; } jedna_zivotinja*pomocni=new jedna_zivotinja; sve_zivotinje*zadnji2=new sve_zivotinje; int pozicija_zadnje_dodanog=0; bool brisi_sve( sve_zivotinje*glava_liste,int parametar) { bool obrisano=0; if(parametar==0) cout<<"Naziv vrste: "; else cout<<"Naziv zivotinje: "; char naziv[40]; cin.ignore(); cin.getline( naziv,40 ); int brojac=NumberL( glava_liste ); jedna_zivotinja*trenutni; while(brojac>0) { trenutni=RetrieveL( brojac,glava_liste ); if(parametar==1){ if( !strcmp( trenutni->naziv,naziv ) ) { cout<<"Brisem!\n"; DeleteL( brojac,glava_liste ); brojac--; obrisano=1; } else brojac--; } else { if( !strcmp( trenutni->vrsta,naziv ) ) { cout<<"Brisem!\n"; DeleteL( brojac,glava_liste ); brojac--; obrisano=1; } else brojac--; } } return obrisano; } void spoji_polja( jedna_zivotinja *a[],int low,int sredina_polja,int high ) { int brojac_lijevo_polje,brojac_pomocno_polje,brojac_desno_polje,k; jedna_zivotinja*pomocno_polje[1000]; brojac_lijevo_polje=low; brojac_pomocno_polje=low; brojac_desno_polje=sredina_polja+1; while( ( brojac_lijevo_polje<=sredina_polja )&&( brojac_desno_polje<=high ) ) { if( a[brojac_lijevo_polje]->cijena>=a[brojac_desno_polje]->cijena ) { pomocno_polje[brojac_pomocno_polje]=a[brojac_lijevo_polje]; brojac_lijevo_polje++; } else { pomocno_polje[brojac_pomocno_polje]=a[brojac_desno_polje]; brojac_desno_polje++; } brojac_pomocno_polje++; } if( brojac_lijevo_polje>sredina_polja ) { for( k=brojac_desno_polje; k<=high; k++ ) { pomocno_polje[brojac_pomocno_polje]=a[k]; brojac_pomocno_polje++; } } else { for( k=brojac_lijevo_polje; k<=sredina_polja; k++ ) { pomocno_polje[brojac_pomocno_polje]=a[k]; brojac_pomocno_polje++; } } for( k=low; k<=high; k++ ) a[k]=pomocno_polje[k]; } void mergesort( jedna_zivotinja *a[], int low,int high ) { int sredina_polja; if( low<high ) { sredina_polja=( low+high )/2; mergesort( a,low,sredina_polja ); mergesort( a,sredina_polja+1,high ); spoji_polja( a,low,sredina_polja,high ); } } void sortiraj( sve_zivotinje*glava_liste ) { int brojac=NumberL( glava_liste ); jedna_zivotinja*nova_zivotinja[brojac]; for( int i=1; i<=brojac; i++ ) { nova_zivotinja[i-1]=RetrieveL( i,glava_liste ); } mergesort( nova_zivotinja,0,brojac-1 ); for( int i=0; i<brojac; i++ ) { IspisL( nova_zivotinja[i] ); } } void ispis_zivotinja( sve_zivotinje*glava_liste ) { jedna_zivotinja*tekuci; int brojac= NumberL( glava_liste ); cout<<"Ukupan broj zivotinja: "<<brojac<<endl; if( pozicija_zadnje_dodanog==0 ){ return; } for( int i=pozicija_zadnje_dodanog; i<=brojac; i++ ) { tekuci=RetrieveL( i,glava_liste ); IspisL( tekuci ); } } bool dodaj_novu( sve_zivotinje*glava_liste ) { int brojac=NumberL( glava_liste ); bool uspjesno=false; jedna_zivotinja*nova_zivotinja=new jedna_zivotinja; UnosL( nova_zivotinja ); while( brojac>=0 ) { if( brojac==0 ) { InsertL( nova_zivotinja,0,glava_liste ); uspjesno=true; pozicija_zadnje_dodanog=1; break; }//if pomocni=RetrieveL( brojac,glava_liste ); if( nova_zivotinja->sifra>pomocni->sifra ) { InsertL( nova_zivotinja,brojac,glava_liste ); uspjesno=true; pozicija_zadnje_dodanog=brojac+1; break; }//if else brojac--; }//while if( !uspjesno )return 0; return 1; }//dodaj_novu int main() { uvod(); sve_zivotinje*glava_liste;//samo inicijaliziramo pokazivac glava_liste=InitL( glava_liste ); int izbor; do { cout<<"Izbornik: "<<endl; cout<<"1. Dodavanje novog zapisa u listu prema rastucoj sifri zivotinje"<<endl; cout<<"2. ispis_zivotinja sadrzaja liste pocevsi od sifre zivotinje koja je posljednja dodana"<<endl; cout<<"3. Pretraga liste te ispis svih zivotinja koje su dostavljene nakon\n 23.rujna 2012. godine te njihov broj"<<endl; cout<<"4. Brisanje pojedinacnih unosa prema nazivu zivotinje"<<endl; cout<<"5. Brisanje svih zivotinja odabrane vrste"<<endl; cout<<"6. Silazno sortiranje zivotinja prema cijeni i nazivu"<<endl; cout<<"7. Izlaz"<<endl; cin>>izbor; system( "cls" ); switch( izbor ) { case 1: if( dodaj_novu( glava_liste )==1 ) { cout<<"Zapis uspjesno dodan"<<endl; } else { cout<<"Zapis nije uspjesno dodan!"<<endl; } break; case 2: ispis_zivotinja( glava_liste ); break; case 3: pretraga( glava_liste ); break; case 4: if( brisi_sve( glava_liste,1 )==1 ) { cout<<"Uspjesno obrisano"<<endl; } else { cout<<"Nije uspjesno obrisano"<<endl; } break; case 5: if( brisi_sve( glava_liste,0 )==1 ) { cout<<"Uspjesno obrisano"<<endl; } else { cout<<"Nije uspjesno obrisano"<<endl; } break; case 6: sortiraj( glava_liste ); } //switch system( "pause" ); system( "cls" ); }//do while( izbor!=7 ); DeleteAll( glava_liste ); return 0; }