/ Published in: C++
Glavni dio programa napravljenog u sklopu prvog zadatka iz labosa struktura podataka.
Expand |
Embed | Plain Text
#include <iostream> #include <cstring> #include "lista_polje.h" //#include "lista_pokazivaci.h" using namespace std; int sifra = 1; string mj1[12]={"sjecanj","veljaca","ozujak","travnj","svibanj","lipanj","srpanj","kolovoz", "rujan","listopad","studeni","prosinac"}; void unos(char *niz){ cin.getline(niz, 100); if(cin.gcount()==1) cin.getline(niz,100); } int zapis(Plista *B){ Pljubimci a; int d,m,g,c; cout <<endl<< "Sifra: " << sifra << endl; a.sifra = sifra; cout << "Vrsta: "; unos(a.vrsta); cout << "Naziv: "; unos(a.naziv); cout << "Cijena: "; do{cin>>c; if (c<0)cout<<"Pogresan unos. "<<endl<<"Ponovni upis cijene (cijena>=0):"; }while(c<0); a.cijena=c; cout << "Unos datuma (GGGG MM DD):"<<endl<<"Godina: "; do{ cin>>g; if (g<1900)cout<<"Pogresan unos. "<<endl<<"Ponovni upis godine (godina>=1900): "; }while(g<1900); a.datum.godina=g; cout << "Mjesec: "; do{ cin>>m; if (m<1 || m>12)cout<<"Pogresan unos. "<<endl<<"Ponovni upis mjeseca (1<=dan<=12): "; }while(m<1 || m>12); a.datum.mjesec=m; cout<< "Dan: "; int mj2[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if( g % 4 == 0 ) mj2[1] = 29; do{ cin>>d; if (d<1 || d>mj2[m-1])cout<<"Pogresan unos. Mjesec "<<mj1[a.datum.mjesec-1]<< " ne moze imati toliko dana." <<endl<<"Ponovni upis dana: "; }while(d<1 || d>mj2[m-1]); a.datum.dan=d; int test = InsertL(a, EndL(B), B); if(test==1){ cout << endl << "Zapis je dodan u listu" << endl<<endl; sifra++; return 1; } else return 0; } void ispis(Pljubimci a){ cout<< endl; cout << "Sifra: " << a.sifra << endl; cout << "Vrsta: " << a.vrsta << endl; cout << "Naziv: " << a.naziv << endl; cout << "Cijena: " << a.cijena << endl; cout << "Datum dostave: " << a.datum.dan << ". "<<mj1[a.datum.mjesec-1]<<" "<<a.datum.godina<<". god."<<endl; cout << endl; } void ispisi_obrnuto(Plista *B){ Pljubimci a; element prvi = PreviousL(EndL(B), B); if( FirstL(B)!= EndL(B)) while(true){ a = RetrieveL(prvi, B); ispis(a); if(prvi == FirstL(B)) break; prvi = PreviousL(prvi, B); } } void ispis_nakon23(Plista *B){ int num=0; Pljubimci a; element zadnji = PreviousL(EndL(B), B); if(EndL(B) != FirstL(B)) while(true){ a = RetrieveL(zadnji, B); if((a.datum.godina>2012) || ((a.datum.godina==2012)&&(a.datum.mjesec>9)) || ((a.datum.godina==2012)&&(a.datum.mjesec==9))&&(a.datum.dan>23)){ num++; ispis(a); }//if if(zadnji == FirstL(B)) break; zadnji = PreviousL(zadnji, B); }//while cout << "Ukupno dodanih nakon 23. rujna 2012.: " << num << endl; } int Brisanje_Naziv(Plista* B){ char naziv[40]; cout << "Unesite naziv zivotinje za brisanje: "; unos(naziv); element prvi = FirstL(B); bool postoji = false; while(prvi != EndL(B)){ Pljubimci a = RetrieveL(prvi,B); if(strcmp(a.naziv,naziv)==0){ postoji = true; break; } prvi = NextL(prvi,B); } if(postoji){ DeleteL(prvi,B); cout<<"Ljubimac "<<naziv<<" je obrisan."<<endl; } else { cout<<"Ljubimac pod nazivom "<<naziv<<" nije pronadjen."<<endl; return 0; } return 1; } int Brisanje_Vrste(Plista* B){ char vrsta[40]; cout << "Unesite vrstu zivotinje za brisanje: "; unos(vrsta); element prvi = FirstL(B); bool postoji = false; while(prvi != EndL(B)){ Pljubimci a = RetrieveL(prvi,B); if(strcmp(a.vrsta,vrsta)!=0){ postoji = true; prvi = NextL (prvi, B); } else{ DeleteL(prvi,B); postoji = true; } } if(postoji){ cout<<"Vrsta "<<vrsta<<" je obrisana."<<endl; } else { cout<<"Vrsta pod nazivom "<<vrsta<<" nije pronadjena."<<endl; return 0; } return 1; } int main(){ Plista *B = InitL(B); int izbor; do{ cout << "IZBORNIK" << endl; cout<<"-------------------------------------------------------"<<endl; cout << "1. Dodavanje zapisa u listu" << endl; cout << "2. Ispis sadrzaja liste" << endl; cout << "3. Ispis zivotinja dostavljenih nakon 23. rujna 2012." << endl; cout << "4. Brisanje unosa prema nazivu zivotinje" << endl; cout << "5. Brisanje unosa prema vrsti zivotinje" << endl; // cout << "6. Silazno sortiranje sadrzaja liste (prema cijeni i nazivu)" << endl; cout << "9. Izlaz iz programa" << endl; cout<<"-------------------------------------------------------"<<endl; cout << "Vas izbor: "; cin >> izbor; switch(izbor){ case 1: zapis(B); break; case 2:ispisi_obrnuto(B);break; case 3: ispis_nakon23(B);break; case 4: Brisanje_Naziv(B);break; case 5: Brisanje_Vrste(B);break; // case 6: break; case 9: cout << "Kraj rada." << endl; break; default: cout << "Krivi unos!" << endl; }//switch cout<<endl; }while(izbor!=9); // system("pause"); return 0; }
You need to login to post a comment.
