/ Published in: C++
Rješenje zadatka 1 iz kolegija strukture podataka
Expand |
Embed | Plain Text
#include <iostream> #include <windows.h> #include "l_polja.h" //#include "l_pok.h" #include <string.h> using namespace std; pzivotinja*provjera=new pzivotinja; tzoo*zadnji2=new tzoo; int br=0; bool dodaj(tzoo*glava){ int brojac=NumberL(glava); bool uspjesno=false; pzivotinja*novi=new pzivotinja; UnosL(novi); while(brojac>=0){ if(brojac==0){ InsertL(novi,0,glava); uspjesno=true; br=1; break; } provjera=RetrieveL(brojac,glava); if(novi->sifra>provjera->sifra){ InsertL(novi,brojac,glava); uspjesno=true; br=brojac+1; break; } else brojac--; } if(!uspjesno)return 0; return 1; } void ispis(tzoo*glava){ pzivotinja*trenutno; int brojac= NumberL(glava); if(br==0)return; for(int i=br;i<=brojac;i++){ trenutno=RetrieveL(i,glava); IspisL(trenutno); } } void pretraga(tzoo*glava){ int brojac=NumberL(glava); pzivotinja*trenutno; int brojac2=0; for(int i=1;i<=brojac;i++){ trenutno=RetrieveL(i,glava); if(trenutno->godina>2012){ IspisL(trenutno); brojac2++; } else if(trenutno->godina==2012&&trenutno->mjesec>9){ IspisL(trenutno); brojac2++; } else if(trenutno->godina==2012&&trenutno->mjesec==9&&trenutno->dan>23){ IspisL(trenutno); brojac2++; } } cout<<"Ukupan broj zivotinja dostavljenih nakon 23. rujna 2012 je: "<<brojac2<<endl; } bool brisi(tzoo*glava){ bool obrisano=0; cout<<"Naziv zivotinje: "; char naziv[40]; cin.ignore(); cin.getline(naziv,40); int brojac=NumberL(glava); pzivotinja*trenutni; while(brojac>0){ trenutni=RetrieveL(brojac,glava); if(strcmp(trenutni->naziv,naziv)==0){ DeleteL(brojac,glava); brojac--; obrisano=1; } else brojac--; } return obrisano; } bool brisi_sve(tzoo*glava){ bool obrisano=0; cout<<"Naziv vrste: "; char naziv[40]; cin.ignore(); cin.getline(naziv,40); int brojac=NumberL(glava); pzivotinja*trenutni; while(brojac>0){ trenutni=RetrieveL(brojac,glava); if(!strcmp(trenutni->vrsta,naziv)){ DeleteL(brojac,glava); brojac--; obrisano=1; } else brojac--; } return obrisano; } void merge(pzivotinja *a[],int low,int pivot,int high) { int h,i,j,k; pzivotinja*b[50]; h=low; i=low; j=pivot+1; while((h<=pivot)&&(j<=high)) { if(a[h]->cijena>=a[j]->cijena) { b[i]=a[h]; h++; } else { b[i]=a[j]; j++; } i++; } if(h>pivot) { for(k=j; k<=high; k++) { b[i]=a[k]; i++; } } else { for(k=h; k<=pivot; k++) { b[i]=a[k]; i++; } } for(k=low; k<=high; k++) a[k]=b[k]; } void mergesort(pzivotinja *a[], int low,int high) { int pivot; if(low<high) { pivot=(low+high)/2; mergesort(a,low,pivot); mergesort(a,pivot+1,high); merge(a,low,pivot,high); } } void sortiraj(tzoo*glava){ int brojac=NumberL(glava); pzivotinja*novi[brojac]; for(int i=1;i<=brojac;i++) novi[i-1]=RetrieveL(i,glava); cout<<"ISPIS ELEMENATA\n"; for(int i=0;i<brojac;i++) IspisL(novi[i]); mergesort(novi,0,brojac-1); cout<<"SORTIRANI ELEMENTI\n===============================\n"; for(int i=0;i<brojac;i++){ IspisL(novi[i]); } } int main() { tzoo*glava; glava=InitL(glava); int izbor; do { cout<<"\n\n"; cout<<" IZBORNIK\n"; cout<<"============================================================================\n"; cout<<"1. Dodavanje novog zapisa u listu prema rastucoj sifri zivotinje\n\n"; cout<<"2. Ispis sadrzaja liste pocevsi od sifre zivotinje koja je posljednja dodana\n\n"; cout<<"3. Pretraga liste te ispis svih zivotinja koje su dostavljene nakon\n 23.rujna 2012. godine te njihov broj\n\n"; cout<<"4. Brisanje pojedinacnih unosa prema nazivu zivotinje\n\n"; cout<<"5. Brisanje svih zivotinja odabrane vrste \n\n"; cout<<"6. Silazno sortiranje zivotinja prema cijeni i nazivu\n"; cout<<"============================================================================\n"; cin>>izbor; system("cls"); switch(izbor) { case 1: if(dodaj(glava)==1)cout<<"Zapis uspjesno dodan\n"; else cout<<"Zapis nije uspjesno dodan!\n"; break; case 2: ispis(glava); break; case 3: pretraga(glava); break; case 4: if(brisi(glava)==1)cout<<"Uspjesno obrisano\n"; else cout<<"Nije uspjesno obrisano\n"; break; case 5: if(brisi_sve(glava)==1)cout<<"Uspjesno obrisano!\n"; else cout<<"Nije uspjesno obrisano\n"; break; case 6: sortiraj(glava); } system("pause"); system("cls"); } while(izbor!=9); return 0; }
You need to login to post a comment.
