/ Published in: C++
Upis životinja u listu, ispis iz liste, pretraživanje, sortiranje i brisanje liste.
Expand |
Embed | Plain Text
#include<iostream> #include<cstring> #include "lista_polja.h" ///#include "lista_pokazivaci.h" using namespace std; int sifra=1; int dodavanje(){ ziv novi; novi.sifra=sifra; cout<<"Unesi vrstu zivotinje: "; cin>>novi.vrsta; cout<<"Unesi naziv zivotinje: "; cin.ignore(); cin.getline(novi.naziv,50); cout<<"Unesi cijenu zivotinje: "; cin>>novi.cijena; cout<<"Unesi datum isporuke (bez tocka -ggggmmdd-): "; cin>>novi.datum; InsertL(novi,EndL(lista),lista); sifra++; return 1; } void ispis(){ ziv posljednji; tip trenutacni=EndL(lista); if(FirstL(lista)==EndL(lista)){ cout<<"Nema elemenata u listi"<<endl; return; } do{ trenutacni=PreviousL(trenutacni,lista); posljednji=RetriveL(trenutacni, lista); cout<<"Sifra zivotinje: "<<posljednji.sifra<<endl; cout<<"Vrsta zivotinje: "<<posljednji.vrsta<<endl; cout<<"Naziv zivotinje: "<<posljednji.naziv<<endl; cout<<"Cijena zivotinje: "<<posljednji.cijena<<endl; cout<<"Datum isporuke: "<<posljednji.datum<<endl; cout<<"+++++++++++++++++++++++++++"<<endl; }while(RetriveL(FirstL(lista),lista).sifra != posljednji.sifra); } void pretrazivanje(){ ziv pomocni; int br=0; tip trenutacni=FirstL(lista); cout<<"Zivotinje sa dostavom nakon 23.rujna 2012"<<endl; while(trenutacni!=EndL(lista)){ pomocni=RetriveL(trenutacni,lista); if(pomocni.datum>"20120923"){ cout<<"Sifra zivotinje: "<<pomocni.sifra<<endl; cout<<"Vrsta zivotinje: "<<pomocni.vrsta<<endl; cout<<"Naziv zivotinje: "<<pomocni.naziv<<endl; cout<<"Cijena zivotinje: "<<pomocni.cijena<<endl; cout<<"Datum isporuke: "<<pomocni.datum<<endl; br++; } trenutacni=NextL(trenutacni,lista); } if(br==0) cout<<"ne postoji zivotinja sa dostavom nakon 23.rujna 2012"<<endl; else cout<<"Postoji "<<br<<" zivotinja sa dosatvom nakon 23.rujna 2012"<<endl; } int brisanje_vrsta(){ ziv pomocni; string vrsta; cout<<"Unesi vrstu životinje koju zelis izbrisati! "<<endl; cin>>vrsta ; tip trenutacni=FirstL(lista); while(trenutacni!=EndL(lista)){ pomocni=RetriveL(trenutacni,lista); if(pomocni.vrsta==vrsta){ DeleteL(LocateL(pomocni,lista),lista); trenutacni=FirstL(lista);} else{ trenutacni=NextL(trenutacni, lista); } } return 1; } int brisanje_naziv(){ ziv pomocni; string naziv; cout<<"Unesi naziv životinje koju zelis izbrisati! "<<endl; cin>>naziv ; tip trenutacni=FirstL(lista); while(trenutacni!=EndL(lista)){ pomocni=RetriveL(trenutacni,lista); if(pomocni.naziv==naziv){ DeleteL(LocateL(pomocni,lista),lista); trenutacni=FirstL(lista);} else{ trenutacni=NextL(trenutacni, lista); } } return 1; } void sortiranje_naziv(ziv novo_polje[],int lijevi, int desni){ int srednji=(lijevi + desni)/2; ziv pomocni; if(desni-lijevi==1){ if(strcmp(novo_polje[desni].naziv,novo_polje[lijevi].naziv)>0){ pomocni=novo_polje[desni]; novo_polje[desni]=novo_polje[lijevi]; novo_polje[lijevi]=pomocni; return; } } else if(desni==lijevi){ return; } else { sortiranje_naziv(novo_polje,lijevi,srednji); sortiranje_naziv(novo_polje,srednji+1,desni); int velicina=desni-lijevi+1; ziv *pomocno_polje=new ziv[velicina]; int l=lijevi; int s=srednji+1; for(int i=0;i<velicina;i++){ if(l==srednji+1){ pomocno_polje[i]=novo_polje[s]; s++; continue; } if(s==desni+1) { pomocno_polje[i]=novo_polje[l]; l++; continue; } if(strcmp(novo_polje[l].naziv,novo_polje[s].naziv)>0){ pomocno_polje[i]=novo_polje[l]; l++; } else { pomocno_polje[i]=novo_polje[s]; s++; } } int j=0; for(int i=lijevi;i<=desni;i++){ novo_polje[i]=pomocno_polje[j]; j++; } } } void sortiranje_cijena(ziv novo_polje[],int lijevi, int desni){ int srednji=(lijevi + desni)/2; ziv pomocni; if(desni-lijevi==1){ if(novo_polje[desni].cijena > novo_polje[lijevi].cijena){ pomocni=novo_polje[desni]; novo_polje[desni]=novo_polje[lijevi]; novo_polje[lijevi]=pomocni; return; } } else if(desni==lijevi){ return; } else { sortiranje_cijena(novo_polje,lijevi,srednji); sortiranje_cijena(novo_polje,srednji+1,desni); int velicina=desni-lijevi+1; ziv *pomocno_polje=new ziv[velicina]; int l=lijevi; int s=srednji+1; for(int i=0;i<velicina;i++){ if(l==srednji+1){ pomocno_polje[i]=novo_polje[s]; s++; continue; } if(s==desni+1) { pomocno_polje[i]=novo_polje[l]; l++; continue; } if(novo_polje[l].cijena>novo_polje[s].cijena){ pomocno_polje[i]=novo_polje[l]; l++; } else { pomocno_polje[i]=novo_polje[s]; s++; } } int j=0; for(int i=lijevi;i<=desni;i++){ novo_polje[i]=pomocno_polje[j]; j++; } } } main(){ int t; int izbor; InitL(lista); do { cout<<"----------IZBORNIK--------"<<endl; cout<<"1. Dodavanje zapisa u listu prema rastucoj sifri zivotinje"<<endl; cout<<"2. Ispis zivotinja( od posljedenje dodane zivotinje)"<<endl; cout<<"3. Pretrazivanje liste i ispis zivotinja dostavljenih nakon 23.rujan 2012"<<endl; cout<<"4. Brisanje odabrane vrste zivotinja"<<endl; cout<<"5. Brisane odabranje zivotinje prema nazivu"<<endl; cout<<"6. Silazno sortiranje liste prema cijeni i nazivu"<<endl; cout<<"0. Izlaz iz programa"<<endl; cin>>izbor; switch(izbor){ case 1:dodavanje(); break; case 2: ispis(); break; case 3: pretrazivanje(); break; case 4:{ int a= brisanje_vrsta(); if(a==1) cout<<"Obrisano!"<<endl; else cout<<"Brisanje nije uspio"<<endl; break;} case 5: { int a= brisanje_naziv(); if(a==1) cout<<"Obrisano!"<<endl; else cout<<"Brisanje nije uspio"<<endl; break;} case 6:{ int velicina_polja=0; tip pomocni=FirstL(lista); while(pomocni!=EndL(lista)){ velicina_polja++; pomocni=NextL(pomocni,lista); } ziv *novo_polje=new ziv[velicina_polja]; pomocni=FirstL(lista); for(int i=0;pomocni!=EndL(lista);i++){ novo_polje[i]=RetriveL(pomocni,lista); pomocni=NextL(pomocni,lista); } cout << "Silazno sortirano prema nazivu:" << endl; sortiranje_naziv(novo_polje,0,velicina_polja-1); for(int i=0;i<velicina_polja;i++){ cout<<"Naziv :"<<novo_polje[i].naziv<<endl; cout<<"Cijena :"<<novo_polje[i].cijena<<endl; } cout<<endl; DeleteAllL(lista); for(int i=0;i<velicina_polja;i++){ InsertL(novo_polje[i],EndL(lista),lista); } cout << "Silazno sortirano prema cijeni:" << endl; sortiranje_cijena(novo_polje,0,velicina_polja-1); for(int i=0;i<velicina_polja;i++){ cout<<"Naziv :"<<novo_polje[i].naziv<<endl; cout<<"Cijena :"<<novo_polje[i].cijena<<endl; } cout<<endl; DeleteAllL(lista); for(int i=0;i<velicina_polja;i++){ InsertL(novo_polje[i],EndL(lista),lista); } break;} default: cout<<"Krivi unos! "<<endl; } } while(izbor); system("PAUSE"); return 0; }
You need to login to post a comment.
