Return to Snippet

Revision: 60531
at November 11, 2012 04:10 by marcelic


Initial Code
#include <iostream>
#include "lista_polje.h"
//#include "lista_pokazivac.h"
using namespace std;

int sifra=10000;

int Dodavanje_zapisa_o_zivotinji(lista *L) {
    Zivotinja x;
    int rezultat;
    
    system("cls");
    cout << " Sifra zivotinje: "<< sifra << endl;
    x.sifra=sifra++;
    cout << " Unesite vrstu zivotinje: ";
    cin.ignore();
    cin.getline(x.vrsta, 30);
    cout << " Unesite naziv zivotinje: ";
    cin.getline(x.naziv, 30);
    cout << " Unesite cijenu zivotinje (kn): ";
    cin >> x.cijena;
    cout << " Unesite datum kada je zivotinja dostavljena (dan, mjesec, godina): \n";
    cout << "Unesite dan: ";
    cin >> x.datum_dostave.dan;
        if(x.datum_dostave.dan<1||x.datum_dostave.dan>31)
        return 0;
    cout << "Unesite mjesec: ";
    cin >> x.datum_dostave.mjesec;
        if(x.datum_dostave.mjesec<1||x.datum_dostave.mjesec>12)
        return 0;
    cout<< "Unesite godinu: ";
    cin >> x.datum_dostave.godina;
        if(x.datum_dostave.godina<2000)
        return 0;
    rezultat=InsertL(x, EndL(L), L);
    if(rezultat) return 1;
    else return 0;
    }

void Ispis_silazno(lista *L) {
     system("cls");
     element tekuci=PreviousL(EndL(L), L);
     if(FirstL(L)==EndL(L)) {
                           system("pause");
                           return;
                           }
     while(1) {
              Zivotinja x=RetreiveL(tekuci, L);
              cout << "====================================\n";
              cout << " Sifra zivotinje: "<< x.sifra<< endl;
              cout << " Vrsta zivotinje: "<< x.vrsta<< endl;
              cout << " Naziv zivotinje: "<< x.naziv<< endl;
              cout << " Cijena zivotinje: "<< x.cijena<< endl;
              cout << " Datum dostave zivotinje: "<< x.datum_dostave.dan<< "/"<< x.datum_dostave.mjesec<< "/"<< x.datum_dostave.godina<< " "<< endl;
              cout << "====================================\n";
              if(tekuci==FirstL(L)) break;
              tekuci=PreviousL(tekuci, L);
              }
     system("pause");
     }
     
void Ispis_nakon_23_rujna_2012(int dan, int mjesec, int godina, lista *L) {
     element tekuci=FirstL(L);
     system("cls");
     if(FirstL(L)==EndL(L)) {
                            system("pause");
                            return;
                            }
     struct {
            int dan, mjesec, godina;
            }dat_dost;
     while(1) { 
              Zivotinja x=RetreiveL(tekuci, L);
              dat_dost.dan=x.datum_dostave.dan;
              dat_dost.mjesec=x.datum_dostave.mjesec;
              dat_dost.godina=x.datum_dostave.godina;
              if((dat_dost.godina>godina)||((dat_dost.godina==godina)&&(dat_dost.mjesec>mjesec))||((dat_dost.godina==godina)&&(dat_dost.mjesec==mjesec))&&(dat_dost.dan>dan)) {
                                            cout << "===================================\n";
                                            cout << " Sifra zivotinje: "<< x.sifra<< endl;
                                            cout << " Vrsta zivotinje: "<< x.vrsta<< endl;
                                            cout << " Naziv zivotinje: "<< x.naziv<< endl;
                                            cout << " Cijena zivotinje: "<< x.cijena<< endl;
                                            cout << " Datum dostave zivotinje: "<<x.datum_dostave.dan<< "/"<< x.datum_dostave.mjesec<< "/"<< x.datum_dostave.godina<< " "<< endl;
                                            cout << "===================================\n";
                                            }
              if(tekuci==PreviousL(EndL(L), L)) break;
              tekuci=NextL(tekuci, L);
              }
     system("pause");
     }
     
int Brisanje_pojedinacnih_naziva(lista *L) {
     system("cls");
     char naziv[30];
     cout << " Unesite naziv zivotinje cije podatke zelite izbrisati: ";
     cin.ignore();
     cin.getline(naziv, 30);
     if(FirstL(L)==EndL(L)) {
                            system("pause");
                            return 0;
                            }
     element tekuci=FirstL(L);
     bool poznat=false;
     while(tekuci!=EndL(L)) {
                            Zivotinja x=RetreiveL(tekuci, L);
                            if(strcmp(x.naziv, naziv)==0) {
                                               poznat=true;
                                               break;
                                               }
                            tekuci=NextL(tekuci, L);
                            }
     if(poznat) {
                DeleteL(tekuci, L);
                }
     else return 0;
     return 1;
     }
     
int Brisanje_svih_zivotinja_odabrane_vrste(lista *L) {
    system("cls");
    char vrsta[30];
    cout << "Unesite vrstu zivotinje cije podate zelite izbrisati: ";
    cin.ignore();
    cin.getline(vrsta, 30);
    element tekuci=FirstL(L);
    bool poznat=false;
    while(tekuci!=EndL(L)) {
                           Zivotinja x=RetreiveL(tekuci, L);
                           if(strcmp(x.vrsta, vrsta)==0) {
                                              poznat=true;
                                              DeleteL(tekuci, L);
                                              }
                           tekuci=NextL(tekuci, L);
                           }
    if(!poznat)
    return 0;
    return 1;
    }
    
void spajanje(Zivotinja *polje,int donji,int sredina,int gornji)
     {
     int h,i,j,k;
     h=donji;
     i=donji;
     j=sredina+1;
 
     Zivotinja *pom = new Zivotinja[gornji-donji+1];
 
     while((h<=sredina)&&(j<=gornji))  {
                                       if(polje[h].cijena>polje[j].cijena || ((polje[h].cijena==polje[j].cijena)&&(strcmp(polje[h].naziv, polje[j].naziv)>0)))
                                       {
                                       pom[i]=polje[h];
                                       h++;
                                       }
                                        else {
                                             pom[i]=polje[j];
                                             j++;
                                             }
                                             i++;
                                             }
                                        if(h>sredina) {
                                                      for(k=j; k<=gornji; k++)
                                                      {
                                                      pom[i]=polje[k];
                                                      i++;
                                                      }
                                        }
                                        else {
                                             for(k=h; k<=sredina; k++)
                                             {
                                             pom[i]=polje[k];
                                             i++;
                                             }
                                        }
     for(k=donji; k<=gornji; k++) polje[k]=pom[k];
     delete [] pom;
     }
 
void Mergesort(Zivotinja *polje, int donji,int gornji ) {
     int sredina;
     if(donji<gornji)
     {
     sredina=(donji+gornji)/2;
     Mergesort(polje,donji,sredina);
     Mergesort(polje,sredina+1,gornji);
     spajanje(polje,donji,sredina,gornji);
     }
}
 
void Sortiranje_cijena_naziv(lista *L){
     int broj=0;
     element tekuci = FirstL(L);
     while(tekuci != EndL(L)){
                              broj++;
                              tekuci = NextL(tekuci,L);
                              }
     Zivotinja* polje = new Zivotinja[broj];
 
     tekuci = FirstL(L);
     int i = 0;
     while(tekuci!=EndL(L)){
                              polje[i] = RetreiveL(tekuci, L);
                              tekuci = NextL(tekuci,L);
                              i++;
                              }
                              Mergesort(polje,0,broj-1);
                              DeleteAllL(L);
                              L=NULL;
                              L=InitL(L);
                              for( i = 0; i < broj; i++){
                              InsertL(polje[i],EndL(L),L);
                              Zivotinja x=polje[i];
                              cout << "============================\n";
                              cout << " Sifra zivotinje: "<< x.sifra<< endl;
                              cout << " Vrsta zivotinje: "<< x.vrsta<< endl;
                              cout << " Naziv zivotinje: "<< x.naziv<< endl;
                              cout << "Cijena zivotinje: "<< x.cijena<< endl;
                              cout << "Datum dostave zivotinje: "<< x.datum_dostave.dan<<"/"<<x.datum_dostave.mjesec << "/"<<x.datum_dostave.godina<<" "<< endl;
                              cout <<"=============================\n";
                              }
                              system("pause");
     }
 
 int main() {
    lista *L=NULL;
    L=InitL(L);
    int izbor=0;
       do {
            system("cls");
            cout << "===========================================================\n";
            cout << "\n               IZBORNIK S MOGUCNOSTIMA                   \n";
            cout << "===========================================================\n";
            cout << " 1. Dodavanje zapisa o zivotinji\n";
            cout << " 2. Ispis liste (silazno prema sifri zivotinje)\n";
            cout << " 3. Ispis zivotinja dostavljenih nakon 23. rujna 2012.\n";
            cout << " 4. Brisanje pojedinacnih unosa (prema nazivu zivotinje)\n";
            cout << " 5. Brisanje svih zivotinja odabrane vrste\n";
            cout << " 6. Sortiranje liste prema cijeni i nazivu zivotinje\n";
            cout << " 7. Izlaz iz programa\n";
            cout << "\n\n Vas izbor je: \n";
            cin >> izbor;
            switch(izbor) {
                      case 1: Dodavanje_zapisa_o_zivotinji(L);
                              break;
                      case 2: Ispis_silazno(L);
                              break;
                      case 3: Ispis_nakon_23_rujna_2012(23, 9, 2012, L);
                              break;
                      case 4: Brisanje_pojedinacnih_naziva(L);
                              break;
                      case 5: Brisanje_svih_zivotinja_odabrane_vrste(L);
                              break;
                      case 6: Sortiranje_cijena_naziv(L);
                              break;
                      case 7: 
                              break;
                      }
        } while(izbor!=7);
        
    DeleteAllL(L);
    return 0;
}

Initial URL


Initial Description
Program koji evidentira zivotinje u trgovini kucnim ljubimcima.

Initial Title
Evidencija zivotinja.cpp - Glavni program

Initial Tags


Initial Language
C++