/ Published in: C++
Main funkcija s izbornikom i funkcijama
Expand |
Embed | Plain Text
/*U programskom jeziku C++ napi���¡ite program koji ���e evidentirati ���¾ivotinje u trgovini sa ku���nim ljubimcima. Zapis treba sadr���¾avati sljede���e podatke: ���¡ifru, vrstu, naziv, cijenu i datum dostave. Na po���etku testiranja programa potrebno je pohraniti minimalno pet razli���itih zapisa u listu pri ���emu naziv i vrstu ���¾ivotinja odabirete samostalno. Program treba raditi neovisno o implementaciji liste. a. Napi���¡ite funkciju koja ���e dodavati zapise u listu prema rastu���oj ���¡ifri ���¾ivotinje i funkciju koja ���e ispisati sadr���¾aj liste po���ev���¡i od ���¡ifre ���¾ivotinje koja je posljednja dodana. Funkcija za dodavanje zapisa u listu vra���a 1 ako je zapis uspje���¡no dodan, a 0 u slu���aju neuspjeha. b. Napi���¡ite funkciju koja ���e pretra���¾iti listu te ispisati sve ���¾ivotinje koje su dostavljene nakon 23. rujna 2012. godine te njihov ukupan broj. c. Napi���¡ite funkciju koja ���e brisati pojedina���ne unose prema nazivu ���¾ivotinje (npr. engleski koker ���¡panijel) te funkciju koja ���e obrisati sve ���¾ivotinje odabrane vrste (npr. sve pse). Obje funkcije vra���aju 1 ako je zapis uspje���¡no izbrisan, a 0 u slu���aju neuspjeha. d. Napi���¡ite funkciju koja ���e prema cijeni i nazivu ���¾ivotinje silazno sortirati sadr���¾aj liste. Potrebno je koristiti algoritam sortiranja spajanjem (merge sort). */ #include <iostream> //#include "lista_pokazivac.h" #include "lista_polja.h" using namespace std; int a=1; pzivotinja *provjera=new pzivotinja; tzivotinja *zadnji2=new tzivotinja; void sadrzaj(pzivotinja *sadrzaj){ cout<<"Sifra: "<<sadrzaj->sifra<<endl; cout<<"Naziv: "<<sadrzaj->naziv<<endl; cout<<"Vrsta: "<<sadrzaj->vrsta<<endl; cout<<"Cijena: "<<sadrzaj->cijena<<endl; cout<<"Datum: "<<sadrzaj->dan<<" . " << sadrzaj->mjesec <<"." << sadrzaj->godina <<endl; cout<<"-----------------------------\n"; }//sadrzaj int dodavanje(int a,tzivotinja *glava){ bool uspjesno=false; pzivotinja *novi=new pzivotinja; zadnji2=glava; UnosL(a,novi); int brojac=NumberL(zadnji2); zadnji2=glava; cout<<brojac<<endl; while(brojac>=0){ if(brojac==0){ InsertL(novi,0,zadnji2); uspjesno=true; break; } provjera=RetrieveL(brojac,zadnji2); zadnji2=glava; if(novi->sifra>provjera->sifra){ InsertL(novi,brojac,zadnji2); uspjesno=true; break; } else{ brojac--; } } if(!uspjesno)return 0; else return 1; } void ispis(tzivotinja *glava){ pzivotinja *trenutno; zadnji2=glava; int brojac= NumberL(zadnji2); for(int i=brojac;i>0;i--){ zadnji2=glava; trenutno=RetrieveL(i,zadnji2); cout<<"Sifra: "<<trenutno->sifra<<endl; cout<<"Naziv: "<<trenutno->naziv<<endl; cout<<"Vrsta: "<<trenutno->vrsta<<endl; cout<<"Cijena: "<<trenutno->cijena<<endl; cout<<"Datum: "<<trenutno->dan<<" . " << trenutno->mjesec <<"." << trenutno->godina <<endl; cout<<"-----------------------------\n"; } } void pretrazi_datum (tzivotinja *glava){ pzivotinja *trenutno; int brojac2=0; int brojac=NumberL(zadnji2); for(int i=brojac;i>0;i--){ trenutno=RetrieveL(i,zadnji2); if(trenutno->godina>2012){ sadrzaj(trenutno); brojac2++;} else if(trenutno->godina==2012 && trenutno->mjesec>9){ sadrzaj(trenutno); brojac2++;} else if(trenutno->godina==2012 && trenutno->mjesec==9 && trenutno->dan>23){ sadrzaj(trenutno); brojac2++;} ; }//for cout<<"Ukupno zivotinja otpremljeno nakon 23.9.2012: "<< brojac2 <<endl; } int brisanje(tzivotinja *glava){ bool izbrisan; pzivotinja *trenutno; int n; int brojac=NumberL(zadnji2); for(int i=brojac;i>0;i--){ cout<<endl<<endl; cout<<"ELEMENT BROJ: "<<i<<endl<<endl; trenutno=RetrieveL(i,zadnji2); cout<<"Sifra: "<<trenutno->sifra<<endl; cout<<"Naziv: "<<trenutno->naziv<<endl; cout<<"Vrsta: "<<trenutno->vrsta<<endl; cout<<"Cijena: "<<trenutno->cijena<<endl; cout<<"Datum: "<<trenutno->dan<<" . " << trenutno->mjesec <<"." << trenutno->godina <<endl; cout<<"-----------------------------\n"; } cout<<"Unesite pojedina���ne unose prema nazivu ���¾ivotinje koju zelite pobrisati: \n"; char l[10]; cin >> l; int h; if(strcmp(trenutno->naziv,l)==0) h=trenutno->sifra; zadnji2=glava; if(brojac>0){ if(DeleteL(h,zadnji2)==0)return 1; else return 0; } cout<<"Nema niti jednog elementa\n"; return 0; } int brisanje(int n,tzivotinja *glava){ cout<<"Unesite vrstu zivotinje cije sve predstavnike zelite pobrisati:\n"; char l[10]; cin >> l ; bool izbrisan; pzivotinja *trenutno; int brojac=NumberL(zadnji2); for(int i=brojac;i>0;i--){ trenutno=RetrieveL(i,zadnji2); if(strcmp(trenutno->vrsta,l)==0){ DeleteL(i,zadnji2); izbrisan=true; i=0; } } if(izbrisan)return 1; if(brojac==0)cout<<"Nema niti jednog elementa\n"; return 0; } /*void merge(pzivotinja a[],int low,int sredina,int high){ int i=low; int k=low; int j=sredina+1; pzivotinja b[1000]; while((i<=sredina)&&(j<=high)){ if(a[i].cijena>a[j].cijena){ b[k]=a[i]; k++; i++; } else{ b[k]=a[j]; k++; j++; } }//while if(i>sredina){ for(int z=j;z<=high;z++){ b[k]=a[z]; k++; } }} void mergesort(int low,int high){ cout<< " Zadnji 2 " << *&(zadnji2) << endl; system("pause"); if(low<high){ int k=(high+low)/2; mergesort(low,k); mergesort(k+1,high); //merge(low,k,high); } }//merge void sort(){ int high=NumberL(zadnji2); int low=0; cout<<" High: " << high; cout<<" Low: " << low; mergesort(0,high); } */ int main(){ tzivotinja *glava; glava=InitL(glava); int izbor; cout << "*******************************************" <<endl; cout << "*******************************************" <<endl; cout << "|| PET SHOP FOI ||" <<endl; cout << "|| ||" <<endl; cout << "|| ||" <<endl; cout << "|| Welcome !!! ||" <<endl; cout << "|| ||" <<endl; cout << "*******************************************" <<endl; cout << "*******************************************" <<endl; do{ cout<<"-------------------------------------\n"; cout<<" GLAVNI IZBORNIK\n"; cout<<"-------------------------------------\n"; cout<<"1) Alociraj/Dodaj novi element u listu"<<endl; cout<<"2) Silazni ispis svih elemenata iz liste"<<endl; cout<<"3) Ispis svih zivotinja otpremljenih nakon 23.9.2012"<<endl; cout<<"4) Brisanje podataka po nazivu zivotinje pojedinacno" <<endl; cout<<"5) Brisanje podataka po vrsti zivotinje za sve"<<endl; cout<<"6) Merge sort " <<endl; cout<<"-------------------------------------\n"; cout<<"9) IZLAZ"<<endl; cin>>izbor; switch(izbor){ case 1:{ zadnji2=glava; int test=dodavanje(a,zadnji2); a++; break; } case 2:{ zadnji2=glava; ispis(zadnji2); break; } case 3:{ zadnji2=glava; pretrazi_datum(zadnji2); break; } case 4:{ zadnji2=glava; brisanje(zadnji2); break; } case 5:{ int n=0; zadnji2=glava; brisanje(n,zadnji2); } case 6:{ // sort(); MERGE SORT NE RADI, NISAM GA USPIO IMPLEMENTIRATI DO KRAJA break; } } } while(izbor!=9); return 0; }
You need to login to post a comment.
