Return to Snippet

Revision: 60541
at November 11, 2012 19:40 by milan_pavlovic


Updated Code
#include <iostream>
#include <cstring>
//#include "lista_polje.h"
#include "lista_pokazivac.h" 
using namespace std;   
int nova_zivotinja() { 
     elem novi;
     novi.sifra=sifra++;
     cout<<"Vrsta: ";
     cin.ignore();
     cin.getline(novi.vrsta,35);
     cout<<"Naziv: ";
     cin.getline(novi.naziv,35);
     cout<<"Cijena: ";cin>>novi.cijena;
     if(novi.cijena<=0) {sifra--;return 0;}
     cout<<"Unesite datum dostave:\n";
     cout<<"Dan: ";cin>>novi.datum.dan;
     if(novi.datum.dan<=0||novi.datum.dan>31) {sifra--;return 0;}
     cout<<"Mjesec: ";
     cin.ignore();
     cin.getline(novi.datum.mjesec,10);
     if(novi.datum.dan>29&&!strcmp(novi.datum.mjesec,"veljaca")) {sifra--;return 0;}
     cout<<"Godina: ";cin>>novi.datum.godina;
     if(novi.datum.godina<1900||novi.datum.godina>2012) {sifra--;return 0;}
     InsertL(novi,br_elem,lista);
     br_elem++; 
     return 1;
    }
    
void ispis_od_posljednjeg() {
     elem a;
     int k=0;
     int p = PreviousL(EndL(lista),lista);
     while(k<br_elem){
           a=RetrieveL(p,lista);
           cout<<"Sifra: "<<a.sifra<<endl;
           cout<<"Vrsta: "<<a.vrsta<<endl;
           cout<<"Naziv: "<<a.naziv<<endl;
           cout<<"Cijena: "<<a.cijena<<endl;
           cout<<"Datum: "<<a.datum.dan<<".";
           cout<<a.datum.mjesec<<"."<<a.datum.godina<<".\n";
           cout<<"-------------------------------\n";
           p = PreviousL(p,lista);
           k++;
           }
     }
     
void ispis_datum() {
     int br=0;
     elem a;
     int p = FirstL(lista); 
     while(p!=EndL(lista)) {
             a = RetrieveL(p,lista); 
             if(a.datum.godina>=2012)
             if((!strcmp(a.datum.mjesec,"rujan")&&a.datum.dan>23)||!strcmp(a.datum.mjesec,"listopad")||
             !strcmp(a.datum.mjesec,"studeni")||!strcmp(a.datum.mjesec,"prosinac")) {
                                                 br++;
                                                 cout<<"Sifra: "<<a.sifra<<endl;
                                                 cout<<"Vrsta: "<<a.vrsta<<endl;
                                                 cout<<"Naziv: "<<a.naziv<<endl;
                                                 cout<<"Cijena: "<<a.cijena<<endl;
                                                 cout<<"Datum: "<<a.datum.dan<<"."<<a.datum.mjesec<<"."<<a.datum.godina<<".\n";
                                                 cout<<"------------------------------\n";
                                                 }
             p = NextL(p,lista);
             }
             cout<<"Broj pronadjenih zivotinja: "<<br<<endl<<endl;       
     }

int brisi_naziv() {
     char naziv[35];
     cout<<"Unesite naziv zivotinje: ";                    
     cin.ignore();
     cin.getline(naziv,35);
     int p = LocateL(naziv,lista);
     if(p==EndL(lista)) return 0;
     else {
            DeleteL(p,lista);
            br_elem--;
            return 1;
            }
     } 

int brisi_vrsta() {
     char vrsta[35];
     int p;
     bool obrisan=0;
     v=1;
     cout<<"Unesite vrstu zivotinje: ";
     cin.ignore();
     cin.getline(vrsta,35);
     while (LocateL(vrsta,lista)!=EndL(lista)) { 
           p = LocateL(vrsta,lista);
           DeleteL(p,lista);
           br_elem--; 
           obrisan=1;                      
           }
     v=0;
     if(!obrisan) return 0;
     else return 1;
     }
     
void ispis() {
     elem a;
     int p=FirstL(lista);
     while (p!=EndL(lista)){
           a=RetrieveL(p,lista);
           cout<<"Sifra: "<<a.sifra<<endl;
           cout<<"Vrsta: "<<a.vrsta<<endl;
           cout<<"Naziv: "<<a.naziv<<endl;
           cout<<"Cijena: "<<a.cijena<<endl;
           cout<<"Datum: "<<a.datum.dan<<".";
           cout<<a.datum.mjesec<<"."<<a.datum.godina<<".\n";
           cout<<"-------------------------------\n";
           p = NextL(p,lista);
           }
     }
     
void spoji(int i, int k, int j) {
     int I=i, J=k+1, K=0;
     elem *b = new elem [j-i+1];
     elem 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 msort() {
     msort(0,br_elem-1);
     }

int main() {
    int izbor;
    InitL(lista);
    do {
        cout<<"1. Dodaj zivotinju\n";
        cout<<"2. Ispis od posljednje dodane\n";
        cout<<"3. Ispis dodanih nakon 23. rujna 2012.\n";
        cout<<"4. Brisanje pojedinacne zivotinje (po nazivu)\n";
        cout<<"5. Brisanje po vrsti\n";
        cout<<"6. Silazno sortiranje po cijeni (ili nazivu)\n"; 
        cout<<"9. Izlaz\n";
        cin>>izbor;
        
        switch(izbor) {
                      case 1:
                           if(nova_zivotinja()) cout<<"Zapis je uspjesno dodan.\n";
                           else cout<<"Pogresan unos\n";
                           break;
                           
                      case 2:ispis_od_posljednjeg();break;
                      case 3:ispis_datum();break;
                      case 4:
                           if(brisi_naziv()) {
                                             cout<<"\nZivotinja je obrisana.\n\n";
                                             ispis();
                                             }
                           else cout<<"\nZivotinja nije uspjesno obrisana.\nUnijeli ste pogresan naziv ili zapis ne postoji.\n\n";break;
                      case 5:
                           if(brisi_vrsta()) {
                                             cout<<"\nVrsta je obrisana.\n\n";
                                             ispis();
                                             }
                           else cout<<"Vrsta nije uspjesno obrisana.\nUnijeli ste pogresan naziv ili zapis ne postoji.\n\n";break;
                      case 6:
                           msort();
                           ispis();
                           
                           break;
                      }
        }while(izbor!=9);
        DeleteAll(lista);
        
    system("pause");
    return 0;
    }

Revision: 60540
at November 11, 2012 06:42 by milan_pavlovic


Initial Code
#include <iostream>
#include <cstring>
//#include "lista_polje.h"
#include "lista_pokazivac.h" 
using namespace std;   
int nova_zivotinja() { 
     elem novi;
     novi.sifra=sifra++;
     cout<<"Vrsta: ";
     cin.ignore();
     cin.getline(novi.vrsta,35);
     cout<<"Naziv: ";
     cin.getline(novi.naziv,35);
     cout<<"Cijena: ";cin>>novi.cijena;
     if(novi.cijena<=0) {sifra--;return 0;}
     cout<<"Unesite datum dostave:\n";
     cout<<"Dan: ";cin>>novi.datum.dan;
     if(novi.datum.dan<=0||novi.datum.dan>31) {sifra--;return 0;}
     cout<<"Mjesec: ";
     cin.ignore();
     cin.getline(novi.datum.mjesec,10);
     if(novi.datum.dan>29&&!strcmp(novi.datum.mjesec,"veljaca")) {sifra--;return 0;}
     cout<<"Godina: ";cin>>novi.datum.godina;
     if(novi.datum.godina<1900||novi.datum.godina>2012) {sifra--;return 0;}
     InsertL(novi,br_elem,lista);
     br_elem++; 
     return 1;
    }
    
void ispis_od_posljednjeg() {
     elem a;
     int k=0;
     int p = PreviousL(EndL(lista),lista);
     while(k<br_elem){
           a=RetrieveL(p,lista);
           cout<<"Sifra: "<<a.sifra<<endl;
           cout<<"Vrsta: "<<a.vrsta<<endl;
           cout<<"Naziv: "<<a.naziv<<endl;
           cout<<"Cijena: "<<a.cijena<<endl;
           cout<<"Datum: "<<a.datum.dan<<".";
           cout<<a.datum.mjesec<<"."<<a.datum.godina<<".\n";
           cout<<"-------------------------------\n";
           p = PreviousL(p,lista);
           k++;
           }
     }
     
void ispis_datum() {
     int br=0;
     elem a;
     int p = FirstL(lista); 
     while(p!=EndL(lista)) {
             a = RetrieveL(p,lista); 
             if(a.datum.godina>=2012)
             if((!strcmp(a.datum.mjesec,"rujan")&&a.datum.dan>23)||!strcmp(a.datum.mjesec,"listopad")||
             !strcmp(a.datum.mjesec,"studeni")||!strcmp(a.datum.mjesec,"prosinac")) {
                                                 br++;
                                                 cout<<"Sifra: "<<a.sifra<<endl;
                                                 cout<<"Vrsta: "<<a.vrsta<<endl;
                                                 cout<<"Naziv: "<<a.naziv<<endl;
                                                 cout<<"Cijena: "<<a.cijena<<endl;
                                                 cout<<"Datum: "<<a.datum.dan<<"."<<a.datum.mjesec<<"."<<a.datum.godina<<".\n";
                                                 cout<<"------------------------------\n";
                                                 }
             p = NextL(p,lista);
             }
             cout<<"Broj pronadjenih zivotinja: "<<br<<endl<<endl;       
     }

int brisi_naziv() {
     char naziv[35];
     elem a;
     cout<<"Unesite naziv zivotinje: ";                    
     cin.ignore();
     cin.getline(naziv,35);
     int p = LocateL(naziv,lista);
     if(p==EndL(lista)) return 0;
     else {
            DeleteL(p,lista);
            br_elem--;
            return 1;
            }
     } 

int brisi_vrsta() {
     char vrsta[35];
     elem a;
     int p;
     bool obrisan=0;
     v=1;
     cout<<"Unesite vrstu zivotinje: ";
     cin.ignore();
     cin.getline(vrsta,35);
     while (LocateL(vrsta,lista)!=EndL(lista)) { 
           p = LocateL(vrsta,lista);
           DeleteL(p,lista);
           br_elem--; 
           obrisan=1;                      
           }
     v=0;
     if(!obrisan) return 0;
     else return 1;
     }
     
void ispis() {
     elem a;
     int p=FirstL(lista);
     while (p!=EndL(lista)){
           a=RetrieveL(p,lista);
           cout<<"Sifra: "<<a.sifra<<endl;
           cout<<"Vrsta: "<<a.vrsta<<endl;
           cout<<"Naziv: "<<a.naziv<<endl;
           cout<<"Cijena: "<<a.cijena<<endl;
           cout<<"Datum: "<<a.datum.dan<<".";
           cout<<a.datum.mjesec<<"."<<a.datum.godina<<".\n";
           cout<<"-------------------------------\n";
           p = NextL(p,lista);
           }
     }
     
void spoji(int i, int k, int j) {
     int I=i, J=k+1, K=0;
     elem *b = new elem [j-i+1];
     elem 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 msort() {
     msort(0,br_elem-1);
     }

int main() {
    int izbor;
    InitL(lista);
    do {
        cout<<"1. Dodaj zivotinju\n";
        cout<<"2. Ispis od posljednje dodane\n";
        cout<<"3. Ispis dodanih nakon 23. rujna 2012.\n";
        cout<<"4. Brisanje pojedinacne zivotinje (po nazivu)\n";
        cout<<"5. Brisanje po vrsti\n";
        cout<<"6. Silazno sortiranje po cijeni (ili nazivu)\n"; 
        cout<<"9. Izlaz\n";
        cin>>izbor;
        
        switch(izbor) {
                      case 1:
                           if(nova_zivotinja()) cout<<"Zapis je uspjesno dodan.\n";
                           else cout<<"Pogresan unos\n";
                           break;
                           
                      case 2:ispis_od_posljednjeg();break;
                      case 3:ispis_datum();break;
                      case 4:
                           if(brisi_naziv()) {
                                             cout<<"\nZivotinja je obrisana.\n\n";
                                             ispis();
                                             }
                           else cout<<"\nZivotinja nije uspjesno obrisana.\nUnijeli ste pogresan naziv ili zapis ne postoji.\n\n";break;
                      case 5:
                           if(brisi_vrsta()) {
                                             cout<<"\nVrsta je obrisana.\n\n";
                                             ispis();
                                             }
                           else cout<<"Vrsta nije uspjesno obrisana.\nUnijeli ste pogresan naziv ili zapis ne postoji.\n\n";break;
                      case 6:
                           msort();
                           ispis();
                           
                           break;
                      }
        }while(izbor!=9);
        DeleteAll(lista);
        
    system("pause");
    return 0;
    }

Initial URL


Initial Description
Glavno programsko rješenje zadatka izrade programa za evidenciju životinja u trgovini kućnim ljubimcima. 
Fakultet organizacije i informatike Varaždin
Kolegij: Strukture podataka

Initial Title
ATP Lista - glavni program

Initial Tags
data, list, podataka

Initial Language
C++