/ Published in: C++
Glavni program s evidencijom kucnih ljubimaca
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> #include <cstdlib> #include <cstring> //#include "lista_polje2.h" #include "lista_pokazivaci.h" using namespace std; int sifra=10000; bool dodavanje(zivotinja *lista){ pomocna pom; pom.sifra=sifra++; cout<<"Unesite podatke\n"; cout<<"Sifra: " << pom.sifra << endl; cout<<"Cijena: "; cin>>pom.cijena; cout<<"Unesite datum u obliku dd/mm/gggg : "; cin.ignore(); cin.getline(pom.datum,15); cout<<"Vrsta zivotinje: "; cin.getline(pom.vrsta,20); cout<<"Naziv zivotinje: "; cin.getline(pom.naziv,15); tip p=EndL(lista); /*if(PreviousL(p,lista)) p=PreviousL(p,lista); while(p!=EndL(lista)){ if(pom.sifra>RetrieveL(p,lista).sifra){ tip next=NextL(p,lista); if(next==EndL(lista) || pom.sifra<RetrieveL(next,lista).sifra) break; p=next; } else break; }*/ return InsertL(pom,p,lista); } void ispis(zivotinja *lista){ tip p = PreviousL(EndL(lista),lista); if(EndL(lista) == FirstL(lista)) return; while(1){ cout<<"-------------------------------------"<<endl; pomocna pom=RetrieveL(p,lista); cout<<"Sifra: " << pom.sifra << endl; cout<<"Vrsta: " << pom.vrsta << endl; cout<<"Naziv: " << pom.naziv << endl; cout<<"Cijena: " << pom.cijena << endl; cout<<"Datum: " << pom.datum << endl; if(p==FirstL(lista)) break; p = PreviousL(p,lista); } } void ispis2(zivotinja *lista){ int br=0; tip p=FirstL(lista); while(p!=EndL(lista)){ pomocna pom=RetrieveL(p,lista); char dd[3],mm[3],gg[5]; for(int i=0; i<10; i++){ if(i<3) dd[i]=pom.datum[i]; if(i>2 && i<6) mm[i-3]=pom.datum[i]; if(i>5) gg[i-6]=pom.datum[i]; } gg[5]='/'; int d,m,g; d = atoi(dd); m = atoi(mm); g = atoi(gg); if(g>2012 || (g==2012 && (m>9|| (m==9 && d>23)))){ cout<<"-------------------------------------"<<endl; cout<<"Sifra: " << pom.sifra << endl; cout<<"Vrsta: " << pom.vrsta << endl; cout<<"Naziv: " << pom.naziv << endl; cout<<"Cijena: " << pom.cijena << endl; cout<<"Datum: " << pom.datum << endl; br++; } p=NextL(p,lista); } if(br>0) cout<<"\nUkupno zivotinja dostavljeno nakon 23.9.2012 ima: "<<br<<endl; else cout<<"Nema zivotinja dostavljeno nakon 23.9.2012! \n"; } bool brisanje(zivotinja *lista){ int n; do{ cout << "\nZa brisanje po vrstama unesite 1, a za brisanje po nazivu zivotinja unesite 2: "; cin >> n; } while (n!=1 && n!=2); if(n==1){ cout << "Unesite naziv vrste: "; char vrsta[20]; cin.ignore(); cin.getline(vrsta,20); tip p = FirstL(lista); while(p!=EndL(lista)){ if(strcmp(RetrieveL(p,lista).vrsta,vrsta)==0){ tip pom=PreviousL(p,lista); p=pom; return DeleteL(pom,lista); } p = NextL(p,lista); } } else{ cout << "Unesite naziv zivotinje: "; char naziv[20]; cin.ignore(); cin.getline(naziv,20); cout << "asdasdas " << naziv; tip p = FirstL(lista); while(p!=EndL(lista)){ if(strcmp(RetrieveL(p,lista).naziv,naziv)==0){ tip pom=PreviousL(p,lista); p=pom; return DeleteL(pom,lista); } p = NextL(p,lista); } } return false; } void Spoji(pomocna *A,int i,int k,int j) { int I=i, J=k+1, K=0; pomocna *B = new pomocna [j-i+1]; while (I<=k && J<=j) if (A[I].cijena>=A[J].cijena) memcpy (&B[K++],&A[I++],sizeof(pomocna)); else memcpy (&B[K++],&A[J++],sizeof(pomocna)); if (I>k) while (J<=j) memcpy (&B[K++],&A[J++],sizeof(pomocna)); else while (I<=k) memcpy (&B[K++],&A[I++],sizeof(pomocna)); for (int I=0;I<=j-i;I++) memcpy (&A[i+I],&B[I],sizeof(pomocna)); delete []B; } void MSort(pomocna *A,int i, int j) { if (i<j) { int k=(i+j)/2; MSort(A,i,k); MSort(A,k+1,j); Spoji(A,i,k,j); } } void MSort(pomocna *A,int N) { MSort(A,0,N-1); } zivotinja* sortiranje(zivotinja *lista){ if(EndL(lista)==FirstL(lista)) exit; int uk=0,i,j; pomocna polje[1000],tmp; tip p=FirstL(lista); while(p!=EndL(lista)){ polje[uk].sifra = RetrieveL(p,lista).sifra; polje[uk].cijena= RetrieveL(p,lista).cijena; strcpy(polje[uk].datum,RetrieveL(p,lista).datum); strcpy(polje[uk].vrsta,RetrieveL(p,lista).vrsta); strcpy(polje[uk].naziv,RetrieveL(p,lista).naziv); uk++; p=NextL(p,lista); } MSort(polje,uk); lista->slijedeci=NULL; p = FirstL(lista); for(int j=0;j<uk;j++) InsertL(polje[j],p,lista); p = FirstL(lista); while(p!=EndL(lista)){ cout << "\nSifra: " << RetrieveL(p,lista).sifra <<"\nCijena:" << RetrieveL(p,lista).cijena << "\nDatum: " << RetrieveL(p,lista).datum << "\nVrsta: " << RetrieveL(p,lista).vrsta << "\nNaziv: " << RetrieveL(p,lista).naziv; p=NextL(p,lista); } return lista; } int main(){ zivotinja *lista=InitL(lista); int n; while(n!=9){ system("cls"); cout << "\n1. Dodavanje elementa u listu" << "\n2. Ispis svih elemenata liste od onog sa najvecom sifrom" << "\n3. Ispis zivotinja koje dostavljenje nakon 23.9.2012" << "\n4. Brisanje elementa liste" << "\n5. Sortiranje elementa liste" << "\n9. Izlaz" << "\nOdabir: "; cin>>n; switch(n){ case 1: if(dodavanje(lista)==true) cout << "\nDodavanje je uspjelo!\n"; else cout << "\nDodavanje nije uspjelo!\n"; break; case 2: ispis(lista); break; case 3: ispis2(lista);break; case 4: if(brisanje(lista)) cout << "\nBrisanje je uspjelo\n"; else cout << "\nBrisanje nije uspjelo\n"; break; case 5:lista = sortiranje(lista); break; }; system("pause"); } cin >> n; return 0; }