/ Published in: C++
Glavni program kojim je izvršena implementacije ATP liste.
Expand |
Embed | Plain Text
#include <iostream> #include "lista_polje.h" //#include "lista_pokazivac.h" using namespace std; int brojac_sifra=0; int dodaj_fun_1(){ bool dodano=true; brojac_sifra++; Tblag x; x.sifra=brojac_sifra; cout<<endl<<"Vrste zivotinje: "<<endl; cin.ignore(); cin.getline(x.vrsta,20); cout<<"Naziv zivotinje: "<<endl; cin.getline(x.naziv,30); cout<<"Cijena unesene zivotinje: "<<endl; cin>>x.cijena; if(0>x.cijena)return 0; cout<<"Unesite datum unosa zivotinje (format unosa DD MM GGGG): "<<endl; cin>>x.dan; cin>>x.mjesec; cin>>x.godina; if((x.dan>31) || (x.dan<=0) || (x.mjesec>12) || (x.mjesec<=0) || (x.godina<=0) || (x.godina>3000)){ brojac_sifra--; dodano=false; return 0;} if(dodano==true)InsertL(x,EndL(lista),lista); return 1; }//kraj prve funkcije void ispis_ziv_zad_prv(){ bool prazno=false; if(FirstL(lista)==EndL(lista)){cout<<endl<<"Niste unijeli elemente u listu!"<<endl;prazno=true;} if(prazno==false){ pomoc x=PreviousL(EndL(lista),lista); Tblag y=RetriveL(x,lista); Tblag z=RetriveL(FirstL(lista),lista); pomoc el=EndL(lista); while(el!=FirstL(lista)){ Tblag y=RetriveL(x,lista); cout<<endl<<"Sifra: "<<y.sifra<<endl <<"Vrsta: "<<y.vrsta<<endl <<"Naziv: "<<y.naziv<<endl <<"Cijena: "<<y.cijena<<endl <<"Datum upisa: "<<y.dan<<"."<<y.mjesec<<"."<<y.godina<<endl; if(y.sifra==z.sifra)break; x=PreviousL(x,lista); }//kraj while-a }//kraj ifa system("pause"); }//kraj ispis_ziv_zad_prv void ispis_posli_dat(){ unsigned short brojac=0; pomoc x=FirstL(lista); if(EndL(lista)==FirstL(lista))cout<<endl<<"Lista je prazna! Prvo dodajte elemente!"<<endl; while(x!=EndL(lista)){ Tblag y=RetriveL(x,lista); if(y.godina>2012 || (y.godina==2012 && y.mjesec>9) || (y.godina==2012 && y.mjesec==9 && y.dan>23) ) {brojac++; cout<<endl<<"Sifra: "<<y.sifra<<endl <<"Vrsta: "<<y.vrsta<<endl <<"Naziv: "<<y.naziv<<endl <<"Cijena: "<<y.cijena<<endl <<"Datum upisa: "<<y.dan<<"."<<y.mjesec<<"."<<y.godina<<endl;} x=NextL(x,lista); }//kraj while-a cout<<endl<<"Ukupno ima "<<brojac<<" unesenih zapisa poslije 23.09.2012!"<<endl; system("pause"); }//kraj ispis_posli_dat int brisi_naziv(){ bool obrisano=false; short zapis_bris=0; Tblag x; if(EndL(lista)==FirstL(lista)){cout<<endl<<"Lista je prazna! Prvo dodajte elemente!"<<endl;return 0;} cout<<endl<<"Unesite naziv po kojem zelite brisati: "<<endl; cin.ignore(); cin.getline(x.naziv,30); LocateL_brojac(0,x,lista); Tblag y[brojac_mista_polje]; pomoc pozicija_y[brojac_mista_polje]; if(brojac_mista_polje>=0)cout<<endl<<"Ispis svih podudarajucih naziva: "<<endl<<endl; else if(brojac_mista_polje==-1){cout<<endl<<"U listi ne postoje nazivi sa zeljenim unosom brisanja!"<<endl; return 0;} for(int i=0;i<=brojac_mista_polje;i++){ zapis_bris++; pozicija_y[i]=LocateL(i,x,lista); Tblag gj=RetriveL(pozicija_y[i],lista); y[i].sifra=gj.sifra; y[i].cijena=gj.cijena; strcpy(y[i].vrsta,gj.vrsta); strcpy(y[i].naziv,gj.naziv); y[i].dan=gj.dan; y[i].mjesec=gj.mjesec; y[i].godina=gj.godina; cout<<endl<<"Zapis "<<zapis_bris<<" ima vrijednosti: "<<endl <<"Sifra: "<<y[i].sifra<<endl <<"Vrsta: "<<y[i].vrsta<<endl <<"Naziv: "<<y[i].naziv<<endl <<"Cijena: "<<y[i].cijena<<endl <<"Datum upisa: "<<y[i].dan<<"."<<y[i].mjesec<<"."<<y[i].godina<<endl; }//kraj for zapis_bris=0; do{ cout<<endl<<"Unesite broj zapisa kojeg zelite izbrisati! (66 za izlaz iz petlje)"<<endl; cin>>zapis_bris;}while(zapis_bris>(brojac_mista_polje+1) && zapis_bris!=66); if(obrisano==false && zapis_bris!=66){ brojac_mista_polje=0; DeleteL(pozicija_y[zapis_bris-1],lista); obrisano=true;}//kraj ifa if(obrisano==true)return 1; else return 0; }//kraj funkcije brisi_naziv int brisi_vrsta(){ bool obrisano=false; Tblag x; if(EndL(lista)==FirstL(lista)){cout<<endl<<"Lista je prazna! Prvo dodajte elemente!"<<endl;return 0;} cout<<endl<<"Unesite vrstu po kojoj zelite brisati: "<<endl; cin.ignore(); cin.getline(x.vrsta,20); LocateL_brojac(0,x,lista); if(brojac_mista_polje==-1){cout<<endl<<"U listi ne postoje nazivi sa zeljenim unosom brisanja!"<<endl; return 0;} for(int i=0;i<=brojac_mista_polje;i++){ DeleteL((LocateL(x,lista)),lista); if(i==brojac_mista_polje)obrisano=true; } if(obrisano==true)return 1; else if(obrisano==false)return 0; } void MSort_druga_fun6(Tblag *polje,int donji,int sredina,int gornji){ int h,i,j,k; h=donji; i=donji; j=sredina+1; Tblag *temp=new Tblag [gornji-donji+1]; while((h<=sredina)&&(j<=gornji)){ if(polje[h].cijena>polje[j].cijena || ((polje[h].cijena=polje[j].cijena)&&(strcmp(polje[h].naziv, polje[j].naziv)>0))){ temp[i]=polje[h]; h++; }//kraj if-a else {temp[i]=polje[j]; j++; }//kraj else i++; }//kraj while if(h>sredina){ for(k=j;k<=gornji;k++){ temp[i]=polje[k]; i++; }//kraj for-a }//kraj if-a else { for(k=h;k<=sredina;k++){ temp[i]=polje[k]; i++; }//kraj for }//kraj else for(k=donji;k<=gornji;k++) polje[k]=temp[k]; delete [] temp; }//kraj MSort_druga_fun6 void MSort_prva_fun6(Tblag *polje,int donji, int gornji){ int sredina; if(donji<gornji){ sredina=(gornji+donji)/2; MSort_prva_fun6(polje,donji,sredina); MSort_prva_fun6(polje,sredina+1,gornji); MSort_druga_fun6(polje,donji,sredina,gornji); }//kraj ifa }//kraj MSort_prva_fun6 void Mergesort_fun6(){ int broj =0; pomoc tekuci=FirstL(lista); while(tekuci !=EndL(lista)){ broj++; tekuci=NextL(tekuci,lista); } Tblag * polje= new Tblag[broj]; tekuci=FirstL(lista); int i=0; while(tekuci != EndL(lista)){ polje[i]=RetriveL(tekuci,lista); tekuci=NextL(tekuci,lista); i++; }//kraj while-a MSort_prva_fun6(polje,0,broj-1); DeleteALL(lista); InitL_MS(lista); system("cls"); cout << "SORTIRANO SILAZNO PREMA CIJENI I NAZIVU" << endl; for( i = 0; i < broj; i++){ InsertL(polje[i],EndL(lista),lista); Tblag ziv = polje[i]; cout << "Sifra: " << ziv.sifra << endl; cout << "Naziv: " << ziv.naziv << endl; cout << "Vrsta: " << ziv.vrsta << endl; cout << "Cijena: " << ziv.cijena << endl; cout << "Datum dostave: " << ziv.dan<<"." <<ziv.mjesec << "." <<ziv.godina<<"."<<endl; cout <<endl; }//for }//kraj Mergesort_fun6 int main(){ InitL(lista); unsigned short izbor; do{ cout<<"================================="<<endl; cout<<" 1) Dodaj zivotinju u listu prema rastucoj sifri! "<<endl; cout<<" 2) Ispis zivotinja od zadnje dodane prema prvoj! "<<endl; cout<<" 3) Ispis zivotinja u listi koje su dostavljene nakon 23.rujan.2012! "<<endl; cout<<" 4) Brisanje zivotinja prema nazivu! "<<endl; cout<<" 5) Brisanje zivotinja prema vrsti! "<<endl; cout<<" 6) Sortiranje silazno prema cijeni i nazivu!"<<endl; cout<<endl<<"=============================="<<endl; cout<<endl<<" Unesite 66 za izlaz iz programa! "<<endl; cout<<"Odaberite zeljenu funkciju: "<<endl; cin>>izbor; system("cls"); switch(izbor){ case 1:if(dodaj_fun_1()==0) cout<<endl<<"Neispravni uneseni podaci, unos neuspjesan!"<<endl; else cout<<endl<<"Ispravno uneseni podaci, unos uspjesan!"<<endl; break; case 2:ispis_ziv_zad_prv();break; case 3:ispis_posli_dat();break; case 4:if(brisi_naziv()==0) cout<<endl<<"Zapis nije obrisan!"<<endl; else cout<<"Zapis uspjesno obrisan!"<<endl; break; case 5:if(brisi_vrsta()==0) cout<<endl<<"Neuspjesno brisanje!"<<endl; else cout<<endl<<"Brisanje unesene vrste je uspjesno!"<<endl; break; case 6:Mergesort_fun6();break; }//kraj switcha }while(izbor!=66);//kraj do while-a system("pause"); return 0; }
You need to login to post a comment.
