/ Published in: C++
Program za prvi zadatak iz kolegija Strukture podataka. U programskom jeziku C++ trebalo je napisati 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.
Expand |
Embed | Plain Text
#include <iostream> #include<string> //include "lista_polja.h" #include "lista_pokazivaci.h" using namespace std; int sifra=1; int noviZapis(){ zivotinje a; a.sifra=sifra; cout<<"Vrsta zivotinje: "; cin>>a.vrsta; cout<<"Naziv zivotinje: "; cin.ignore(); cin.getline(a.naziv,50); cout<<"Cijena zivotinje: "; cin>>a.cijena; cout<<"Datum isporuke (ggggmmdd): "; cin>>a.datum; InsertL(a,EndL(l),l); sifra++; return 1; } void ispis_silazno(){ zivotinje last; tip temp=EndL(l); if(FirstL(l)==EndL(l)){ cout<<"Lista je prazna!!"<<endl; return; } do{ temp=PreviousL(temp,l); last=RetrieveL(temp, l); cout<<"Sifra : "<<last.sifra<<endl; cout<<"Vrsta: "<<last.vrsta<<endl; cout<<"Naziv: "<<last.naziv<<endl; cout<<"Cijena: "<<last.cijena<<endl; cout<<"Datum isporuke: "<<last.datum<<endl; }while(RetrieveL(FirstL(l),l).sifra != last.sifra); } void ispis2(){ int num=0; zivotinje c; tip temp = FirstL(l); while(temp!=EndL(l)){ c = RetrieveL(temp, l); if(c.datum>"20120923"){ cout << "Sifra: " << c.sifra << endl; cout << "Vrsta: " << c.vrsta << endl; cout << "Naziv: " << c.naziv << endl; cout<< "Cijena: "<<c.cijena<<endl; cout << "Datum(ggggmmdd): " << c.datum << endl; cout << endl; num++;} temp=NextL(temp,l); } if(num==0) cout<<"Nakon 23. rujna 2012. nije dostavljena nijedna zivotinja"<<endl; else cout<<"Broj dostavljenih nakon 23.rujna 2012: "<<num<<endl; } int brisanje_po_nazivu(){ string naziv; cout << "Naziv zivotinje koju zelite obrisati: "; cin >> naziv; zivotinje c; tip temp = FirstL(l); while (temp != EndL(l)) { c = RetrieveL(temp, l); if (c.naziv == naziv) { DeleteL(LocateL(c, l), l); temp = FirstL(l); } else { temp = NextL(temp, l); } } return 1; } int brisanje_po_vrsti(){ string vrsta; cout << "Vrsta zivotinje za brisanje: "; cin >> vrsta; zivotinje c; tip temp = FirstL(l); tip za_brisanje; while (temp != EndL(l)) { c = RetrieveL(temp, l); if (c.vrsta == vrsta) { za_brisanje = temp; DeleteL(za_brisanje, l); temp = FirstL(l); } else { temp = NextL(temp, l); } } return 1; } void mergesort_naziv(zivotinje novo_polje[],int lijevi, int desni){ int srednji=(lijevi + desni)/2; zivotinje 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 { mergesort_naziv(novo_polje,lijevi,srednji); mergesort_naziv(novo_polje,srednji+1,desni); int velicina=desni-lijevi+1; zivotinje *pomocno_polje=new zivotinje[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 mergesort_cijena(zivotinje novo_polje[],int lijevi, int desni){ int srednji=(lijevi + desni)/2; zivotinje 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 { mergesort_cijena(novo_polje,lijevi,srednji); mergesort_cijena(novo_polje,srednji+1,desni); int velicina=desni-lijevi+1; zivotinje *pomocno_polje=new zivotinje[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++; } } } int main(){ InitL(l); int izbor; do{ cout<<endl; cout << "Izbornik" << endl; cout << "1 - Unos novog zapisa" << endl; cout << "2 - Ispis(silazno)" << endl; cout << "3 - Ispis proizvoda dostavljenih nakon 23.09.2012. i njihov ukupan broj" << endl; cout << "4 - Brisanje po nazivu zivotinje" << endl; cout<< "5- Brisanje po vrsti zivotinje"<<endl; cout << "6 - Sortiranje i ispis zivotinja prema cijeni i nazivu zivotinja" << endl; cout << "0 - Kraj rada" << endl << endl; cout << "Vas izbor: "; cin >> izbor; switch(izbor){ case 1: noviZapis(); break; case 2: ispis_silazno(); break; case 3: ispis2(); break; case 4:{ int a= brisanje_po_nazivu(); if(a==1) cout<<"Obrisana je unesena zivotinja!"<<endl; else cout<<"Brisanje nije uspjelo"<<endl; break;} case 5:{int a =brisanje_po_vrsti(); if(a==1) cout<<"Obrisana je unesena vrsta!"<<endl; else cout<<"Brisanje nije uspjelo"<<endl; break;} case 6: { int velicina_polja=0; tip pomocni=FirstL(l); while(pomocni!=EndL(l)){ velicina_polja++; pomocni=NextL(pomocni,l); } zivotinje *novo_polje=new zivotinje[velicina_polja]; pomocni=FirstL(l); for(int i=0;pomocni!=EndL(l);i++){ novo_polje[i]=RetrieveL(pomocni,l); pomocni=NextL(pomocni,l); } cout << "Silazno sortirano prema nazivu zivotinje(merge sort):" << endl; mergesort_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(l); for(int i=0;i<velicina_polja;i++){ InsertL(novo_polje[i],EndL(l),l); } cout << "Silazno sortirano prema cijeni zivotinje(merge sort):" << endl; mergesort_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(l); for(int i=0;i<velicina_polja;i++){ InsertL(novo_polje[i],EndL(l),l); } break;} case 0:cout<<"kraj"<<endl;break; default: cout<<"Krivi unos! "<<endl; } }while(izbor); system("pause"); return 0; }
You need to login to post a comment.
