Return to Snippet

Revision: 60791
at November 12, 2012 09:47 by Jurij


Initial Code
#include <iostream>
    #include <cstring>
    #include "lista_polje.h"
    //#include "lista_pokazivac.h"
    using namespace std;
    
    int unos() {
      zapis novi;
      novi.sifra=sifra++;
      cout<<"Vrsta: ";
      cin.ignore();
      cin.getline(novi.vrsta,20);
      cout<<"Naziv: ";
      cin.getline(novi.naziv,20);
      cout<<"Cijena: ";cin>>novi.cijena;
      if(novi.cijena<=0) {sifra--;return 0;}
      cout<<"Datum dostave zivotinje"<<endl;
      cout<<"Dan: ";cin>>novi.datum.d;
      if(novi.datum.d<=0||novi.datum.d>31) {sifra--;return 0;}
      cout<<"Mjesec: ";
      cin>>novi.datum.m;
      if(novi.datum.m<=0||novi.datum.m>12) {sifra--;return 0;}
      cout<<"Godina: ";cin>>novi.datum.g;
      if(novi.datum.g<1990||novi.datum.g>2012) {sifra--;return 0;}
      InsertL(novi,n,L);
      n++;
      return 1;
    }
     
    void ispis_silaz() {
    zapis h;
    int k=0;
    int p = PreviousL(EndL(L),L);
    while(k<n){
    h=RetrieveL(p,L);
    cout<<"Sifra: "<<h.sifra<<endl;
    cout<<"Vrsta: "<<h.vrsta<<endl;
    cout<<"Naziv: "<<h.naziv<<endl;
    cout<<"Cijena: "<<h.cijena<<endl;
    cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl;
    cout<<"-------------------------------"<<endl;
    p = PreviousL(p,L);
    k++;
    }
    }
     
    void ispis_datum() {
    int k=0;
    zapis h;
    int p = FirstL(L);
    while(p!=EndL(L)) {
      h = RetrieveL(p,L);
      if(h.datum.g=2012 && h.datum.m>=9 && h.datum.d>=23)
        {
        k++;
        cout<<"Sifra: "<<h.sifra<<endl;
        cout<<"Vrsta: "<<h.vrsta<<endl;
        cout<<"Naziv: "<<h.naziv<<endl;
        cout<<"Cijena: "<<h.cijena<<endl;
        cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl;
        cout<<"------------------------------"<<endl;                
        }
      if(h.datum.g=2012 && h.datum.m>9)
        {
        k++;
        cout<<"Sifra: "<<h.sifra<<endl;
        cout<<"Vrsta: "<<h.vrsta<<endl;
        cout<<"Naziv: "<<h.naziv<<endl;
        cout<<"Cijena: "<<h.cijena<<endl;
        cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl;
        cout<<"------------------------------"<<endl;
        }
      p = NextL(p,L);
    }
    cout<<"Broj pronadjenih zivotinja: "<<k<<endl<<endl;
    }
     
    int brisi_naziv() {
    char naziv[20];
    cout<<"Unesite naziv zivotinje: ";
    cin.ignore();
    cin.getline(naziv,20);
    int p = LocateL(naziv, L);
    if(p==EndL(L))return 0;
    else {
      DeleteL(p,L);
      n--;
      return 1;
    }
    }
     
    int brisi_vrsta() {
    char vrsta[20];
    int p;
    bool gotovo=0;
    cout<<"Unesite vrstu zivotinje: ";
    cin.ignore();
    cin.getline(vrsta,20);
    while (LocateL(vrsta,L)!=EndL(L)) {
      p = LocateL(vrsta,L);
      DeleteL(p,L);
      n--;
      gotovo=1;
      }
    if(!gotovo) return 0;
    else return 1;
    }
     
    void ispis() {
    zapis h;
    int p=FirstL(L);
    while (p!=EndL(L)){
    h=RetrieveL(p,L);
    cout<<"Sifra: "<<h.sifra<<endl;
    cout<<"Vrsta: "<<h.vrsta<<endl;
    cout<<"Naziv: "<<h.naziv<<endl;
    cout<<"Cijena: "<<h.cijena<<endl;
    cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl;
    cout<<"-------------------------------"<<endl;
    p = NextL(p,L);
    }
    }
     
    void spoji(int i, int k, int j) {
    int I=i, J=k+1, K=0;
    zapis *b = new zapis[j-i+1];
    zapis prvi,drugi;
     
    while(I<=k && J<=j){
     
    prvi=RetrieveL(I,L);
    drugi=RetrieveL(J,L);
     
    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,L);
    b[K++] = drugi;
    J++;
    }
     
    else while(I<=k) {
    prvi=RetrieveL(I,L);
    b[K++] = prvi;
    I++;
    }
     
    for(int I=0;I<=j-i;I++) L.podaci[i+I]=b[I];
     
    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 msort() {
    msort(0,n-1);
    }
     
    int main() {
    int izbor;
    InitL(L);
    do {
      cout<<"1. Unos nove zivotinje"<<endl;
      cout<<"2. Ispis zivotinja od zadnjeg unosa prema prvom"<<endl;
      cout<<"3. Ispis zivotinja dodanih nakon 23. 09. 2012."<<endl;
      cout<<"4. Brisanje zivotinje unosom naziva"<<endl;
      cout<<"5. Brisanje cijele vrste zivotinja"<<endl;
      cout<<"6. Silazno merge sortiranje, po cijeni"<<endl;
      cout<<"0. Izlaz"<<endl;
      cin>>izbor;
      switch(izbor) {
        case 1:
          if(unos())cout<<"Zapisano je."<<endl;
          else cout<<"Krivi unos"<<endl;
          break;
        case 2:
          ispis_silaz();
          cout<<endl;
          break;
        case 3:
          ispis_datum();
            cout<<endl;
          break;
        case 4:
          if(brisi_naziv()) {
          cout<<"Uspjesno obrisano."<<endl;
          ispis();
          }
          else cout<<"Neuspjeh. Krivi naziv ili takav naziv ne postoji"<<endl;
          break;
        case 5:
          if(brisi_vrsta()) {
          cout<<"Uspjesno obrisano."<<endl;
          ispis();
          }
          else cout<<"Neuspjeh. Krivo ime vrste ili takva vrsta ne postoji";
          break;
        case 6:
          msort();
          ispis();
          cout<<endl;
          break;
      }
    }while(izbor!=0);
    system("pause");
    return 0;
    }

Initial URL

                                

Initial Description
main dio programa za prvi zadatak

Initial Title
Evidencija zivotinja main

Initial Tags
list

Initial Language
C++