Revision: 60729
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 12, 2012 08:09 by mmilutin2
Initial Code
#include <iostream> //#include "lista_polje.h" #include "lista_pokazivac.h" #include "time.h" using namespace std; void unos(char *znakovni_niz){ cin.getline(znakovni_niz, 30); if (cin.gcount()==1) cin.getline (znakovni_niz,30); }; int dodaj() { int pom; tzivotinja *novi = new tzivotinja; cout << "Sifra: " << sifra << endl; novi->sifra = sifra; cout << "Naziv: "; unos(novi->naziv); cout << "Vrsta: "; unos(novi->vrsta); cout << "Cijena: "; cin >> novi->cijena; cout << "Datum dostave: " << endl; cout << "Godina: "; do{cin >> pom; if (pom<2000 || pom >2050) { cout << "Godina mora biti u rasponu 2000-2050" << endl; cout << "Godina: "; } }while(pom<2000 || pom >2050); (novi->datum).tm_year = pom; cout << "Mjesec: "; do{cin >> pom; if (pom<1 || pom >12) { cout << "Mjesec mora biti u rasponu 1-12" << endl; cout << "Mjesec: "; } }while(pom<1 || pom >12); (novi->datum).tm_mon = pom; cout << "Dan: "; if ((novi -> datum).tm_mon == 1 || (novi -> datum).tm_mon == 3 || (novi -> datum).tm_mon == 5 || (novi -> datum).tm_mon == 7 || (novi -> datum).tm_mon == 8 || (novi -> datum).tm_mon == 10 || (novi -> datum).tm_mon == 12) { do{cin >> pom; if (pom<0 || pom >32) { cout << "Dan mora biti u rasponu 0-31" <<endl; cout << "Dan: "; } } while(pom<0 || pom >32); } if ((novi -> datum).tm_mon == 4 || (novi -> datum).tm_mon == 6 || (novi -> datum).tm_mon == 9 || (novi -> datum).tm_mon == 11) { do{cin >> pom; if (pom<0 || pom >31) { cout << "Dan mora biti u rasponu 0-30" <<endl; cout << "Dan: "; } } while(pom<0 || pom >31); } if ((novi -> datum).tm_mon == 2) { if (((novi -> datum).tm_year) % 4 == 0) { do{cin >> pom; if (pom<0 || pom >30) { cout << "Dan mora biti u rasponu 0-29" <<endl; cout << "Dan: "; } } while(pom<0 || pom > 30); } else { do{cin >> pom; if (pom<0 || pom >28) { cout << "Dan mora biti u rasponu 0-28" <<endl; cout << "Dan: "; } } while(pom<0 || pom > 28); } } (novi->datum).tm_mday = pom; return (insertL(novi,endL(lista),lista)); } void ispisi_listu() { tzivotinja tekuci; for(int i = endL(lista)-1; i>0;i--){ tekuci = retrieveL(previousL(i,lista), lista); cout << "Sifra: " << tekuci.sifra << endl; cout << "Naziv: " << tekuci.naziv << endl; cout << "Vrsta: " << tekuci.vrsta << endl; cout << "Cijena: " << tekuci.cijena << endl; cout << "Datum dostave: " << (tekuci.datum).tm_mday << "." << (tekuci.datum).tm_mon << "." << (tekuci.datum).tm_year << "." << endl<<endl; } } int pretrazi_listu() { tzivotinja tekuci; int br=0; for(int i = endL(lista)-1; i>0;i--){ tekuci = retrieveL(previousL(i,lista), lista); if(!((tekuci.datum).tm_year < 2012 || ((tekuci.datum).tm_year == 2012 && ((tekuci.datum).tm_mon) < 9) || ((tekuci.datum).tm_year == 2012 && ((tekuci.datum).tm_mon) == 9) && (tekuci.datum).tm_mday <= 23)){ cout << "Sifra: " << tekuci.sifra << endl; cout << "Naziv: " << tekuci.naziv << endl; cout << "Vrsta: " << tekuci.vrsta << endl; cout << "Cijena: " << tekuci.cijena << endl; cout << "Datum dostave: " << (tekuci.datum).tm_mday << "." << (tekuci.datum).tm_mon << "." << (tekuci.datum).tm_year << "." << endl<<endl; br++; } } return br; } int obrisi_prema_nazivu(){ tzivotinja tekuci; cout << "Unesite naziv zivotinje za brisanje: "; char naziv[30]; bool nadjeno = false; unos(naziv); for(int i = endL(lista)-1; i>0 && !nadjeno;i--){ tekuci = retrieveL(previousL(i,lista), lista); if(strcmp(naziv,tekuci.naziv)==0){ cout << "Jeste li sigurni da zelite obrisati zapis (d/n): " << endl << endl; cout << "Sifra: " << tekuci.sifra << endl; cout << "Naziv: " << tekuci.naziv << endl; cout << "Vrsta: " << tekuci.vrsta << endl; cout << "Cijena: " << tekuci.cijena << endl; cout << "Datum dostave: " << (tekuci.datum).tm_mday << "." << (tekuci.datum).tm_mon << "." << (tekuci.datum).tm_year << "." << endl<<endl; nadjeno = true; char izbor; cout << "(d/n) >> "; do{cin >>izbor;} while(izbor!='d' && izbor!='n'); if(izbor=='d') deleteL(i-1,lista); else return 0; } } return nadjeno; } int obrisi_prema_vrsti(){ tzivotinja tekuci; cout << "Unesite vrstu zivotinje za brisanje: "; char vrsta[30]; bool nadjeno = false; unos(vrsta); for(int i = endL(lista)-1; i>0;i--){ tekuci = retrieveL(previousL(i,lista), lista); if(strcmp(vrsta,tekuci.vrsta)==0){ char izbor; if(!nadjeno){ cout << "Jeste li sigurni da zelite obrisati zapise ove vrste: " << vrsta << endl << endl; cout << "(d/n) >> "; do{cin >>izbor;} while(izbor!='d' && izbor!='n'); } if(izbor=='d') deleteL(i-1,lista); nadjeno = true; } } return nadjeno; } void spoji(int i, int k, int j) { int I=i, J=k+1, K=0; tzivotinja *b = new tzivotinja [j-i+1]; tzivotinja prvi,drugi; while(I<=k && J<=j){ prvi=retrieveL(I,lista); drugi=retrieveL(J,lista); if(prvi.cijena > drugi.cijena) { b[K++]=prvi; I++; } else if(prvi.cijena < drugi.cijena){ b[K++]=drugi; J++; } else if(strcmp(prvi.naziv,drugi.naziv)==-1) { b[K++]=drugi; J++; } else { b[K++]=prvi; I++; } } if(I>k) while(J<=j) { drugi=retrieveL(J,lista); b[K++] = drugi; J++; } else while(I<=k) { prvi=retrieveL(I,lista); b[K++] = prvi; I++; } for(int I=0;I<=j-i;I++) Vrati(b[I],i+I,lista); delete [] b; } void msort(int i, int j) { if(i<j) { int k=(i+j)/2; msort(i,k); msort(k+1,j); spoji(i,k,j); } } void sortiraj() { int br_elem = endL(lista)-1; msort(0,br_elem-1); reverse(lista); } int izbornik(){ int izbor; cout << "-------------------------------" << endl; cout << " GLAVNI IZBORNIK " << endl; cout << "-------------------------------" << endl; cout << " 1) Dodavanje zapisa" << endl; cout << " 2) Ispis liste" << endl; cout << " 3) Ispis zivotinja dostavljenih nakon 23.09.2012." << endl; cout << " 4) Brisanje prema nazivu" << endl; cout << " 5) Brisanje prema vrsti" << endl; cout << " 6) Sortiranje liste" << endl; cout << " 9) Izlaz iz programa" << endl; cout << endl; cin >> izbor; return izbor; } int main(){ initL(lista); int izbor = 0; do { izbor = izbornik(); switch(izbor){ case 1: cout << (dodaj()? "Zapis uspjesno dodan!\n" : "Zapis nije dodan\n"); break; case 2: ispisi_listu(); break; case 3: cout<< "Ispisan(o) je " << pretrazi_listu() << " zapis(a).\n"; break; case 4: if(obrisi_prema_nazivu()) cout << "Zapis izbrisan"<<endl<<endl; else cout << "Nije pronadjen zapis s tim nazivom / zapis nije obrisan" << endl; break; case 5: if(obrisi_prema_vrsti()) cout << "Zivotinje te vrste su obrisane" << endl; else cout << "Ne postoji zapis te vrste" << endl; break; case 6: sortiraj(); break; } }while (izbor!=9); return 0; }
Initial URL
Initial Description
Koliko sam primjetio, drugi studenti uglavnom nisu koristili biblioteku "time.h", neke od razlika su i kod upisivanja datuma, postoje razlike u vizualnom dijelu programa.
Initial Title
Zadatak 1 Main program Mario Milutin
Initial Tags
Initial Language
C++