Return to Snippet

Revision: 60566
at November 11, 2012 21:19 by Quake6


Initial Code
#include <iostream>
#include "liste_poka.h"
//#include "lista_polja.h"
#include <string.h>
#include <windows.h>
using namespace std;


void spoji_polja( z *polje[],int low,int mid,int high )
{
        int l,p,d,k;
        z*pom[1000];
        l=low;
        p=low;
        d=mid+1;
        while( ( l<=mid )&&( d<=high ) ) {
                if( polje[l]->cijena>=polje[d]->cijena ) {
                        pom[p]=polje[l];
                        l++;
                } else {
                        pom[p]=polje[d];
                        d++;
                }
                p++;
        }
        if( l>mid ) {
                for( k=d; k<=high; k++ ) {
                        pom[p]=polje[k];
                        p++;
                }
        } else {
                for( k=l; k<=mid; k++ ) {
                        pom[p]=polje[k];
                        p++;
                }
        }
        for( k=low; k<=high; k++ ){
            polje[k]=pom[k];
        }
}

bool brisi_sve( t*list_head,int cetvrti_ili_peti)
{
        bool obrisano=0;
        if(cetvrti_ili_peti==0){
                cout<<"Naziv vrste-> ";
        }
        else{
                cout<<"Naziv zivotinje-> ";
        }
        char naziv[40];
        cin.ignore();
        cin.getline( naziv,40 );
        int br=NumberL( list_head );
        z*trenutni;
        while(br>0) {
                trenutni=RetrieveL( br,list_head );
                if(cetvrti_ili_peti==1) {
                        if( !strcmp( trenutni->naziv,naziv ) ) {
                                DeleteL( br,list_head );
                                br--;
                                obrisano=1;
                        } else{
                                br--;
                        }
                } else {
                        if( !strcmp( trenutni->vrsta,naziv ) ) {
                                DeleteL( br,list_head );
                                br--;
                                obrisano=1;
                        } else{
                                br--;
                        }
                }
        }
        return obrisano;
}

void pretraga( t*list_head )
{
        int br=NumberL( list_head );
        z*kretanje_kroz_listu;
        int b=0;
        for( int i=1; i<=br; i++ ) {
                kretanje_kroz_listu=RetrieveL( i,list_head );
                if( kretanje_kroz_listu->godina>2012 ) {
                        cout<<"-----------------------"<<endl;
                        cout<<"Sifra-> "<<kretanje_kroz_listu->sifra<<endl;
                        cout<<"Vrsta-> "<<kretanje_kroz_listu->vrsta<<endl;
                        cout<<"Naziv-> "<<kretanje_kroz_listu->naziv<<endl;
                        cout<<"Datum-> "<<kretanje_kroz_listu->dan<<"."<<kretanje_kroz_listu->mjesec<<"."<<kretanje_kroz_listu->godina<<endl;
                        cout<<"Cijena-> "<<kretanje_kroz_listu->cijena<<endl;;
                        b++;
                } else if( kretanje_kroz_listu->godina==2012&&kretanje_kroz_listu->mjesec>9 ) {
                        cout<<"-----------------------"<<endl;
                        cout<<"Sifra-> "<<kretanje_kroz_listu->sifra<<endl;
                        cout<<"Vrsta-> "<<kretanje_kroz_listu->vrsta<<endl;
                        cout<<"Naziv-> "<<kretanje_kroz_listu->naziv<<endl;
                        cout<<"Datum-> "<<kretanje_kroz_listu->dan<<"."<<kretanje_kroz_listu->mjesec<<"."<<kretanje_kroz_listu->godina<<endl;
                        cout<<"Cijena-> "<<kretanje_kroz_listu->cijena<<endl;
                        b++;
                } else if( kretanje_kroz_listu->godina==2012&&kretanje_kroz_listu->mjesec==9&&kretanje_kroz_listu->dan>23 ) {
                        cout<<"-----------------------"<<endl;
                        cout<<"Sifra-> "<<kretanje_kroz_listu->sifra<<endl;
                        cout<<"Vrsta-> "<<kretanje_kroz_listu->vrsta<<endl;
                        cout<<"Naziv-> "<<kretanje_kroz_listu->naziv<<endl;
                        cout<<"Datum-> "<<kretanje_kroz_listu->dan<<"."<<kretanje_kroz_listu->mjesec<<"."<<kretanje_kroz_listu->godina<<endl;
                        cout<<"Cijena-> "<<kretanje_kroz_listu->cijena<<endl;
                        b++;
                }
        }
        cout<<"Broj zivotinja dostavljenih nakon 23. rujna 2012-> "<<b<<endl;
}

z*pomocni=new z;
t*zadnji2=new t;
int z_dodan=0;

void mergesort( z *polje[], int low,int high )
{
        int mid;
        if( low<high ) {
                mid=( low+high )/2;
                mergesort( polje,low,mid ); // 4
                mergesort( polje,mid+1,high );
                spoji_polja( polje,low,mid,high );
        }
}

void ispis_zivotinja( t*list_head )
{
        z*kretanje_kroz_listu;
        int br= NumberL( list_head );
        cout<<"Ukupan broj zivotinja-> "<<br<<endl;
        if( z_dodan==0 ){
                return;
        }
        for( int i=z_dodan; i<=br; i++ ) {
                kretanje_kroz_listu=RetrieveL( i,list_head );
                cout<<"-----------------------"<<endl;
                cout<<"Sifra-> "<<kretanje_kroz_listu->sifra<<endl;
                cout<<"Vrsta-> "<<kretanje_kroz_listu->vrsta<<endl;
                cout<<"Naziv-> "<<kretanje_kroz_listu->naziv<<endl;
                cout<<"Datum-> "<<kretanje_kroz_listu->dan<<"."<<kretanje_kroz_listu->mjesec<<"."<<kretanje_kroz_listu->godina<<endl;
                cout<<"Cijena-> "<<kretanje_kroz_listu->cijena<<endl;
        }
}

void sortiraj( t*list_head )
{
        int br=NumberL( list_head );
        z*polje[br];
        for( int i=1; i<=br; i++ ){
                polje[i-1]=RetrieveL( i,list_head );
        }
        mergesort( polje,0,br-1 );
        for( int i=0; i<br; i++ ) {

                cout<<"-----------------------"<<endl;
                cout<<"Sifra-> "<<polje[i]->sifra<<endl;
                cout<<"Vrsta-> "<<polje[i]->vrsta<<endl;
                cout<<"Naziv-> "<<polje[i]->naziv<<endl;
                cout<<"Datum-> "<<polje[i]->dan<<"."<<polje[i]->mjesec<<"."<<polje[i]->godina<<endl;
                cout<<"Cijena-> "<<polje[i]->cijena<<endl;
        }
}

bool dodaj_novu( t*list_head )
{
        int br=NumberL( list_head );
        bool dodan=false;
        z*nova_zivotinja=new z;
        cout<<"Sifra-> ";
        cin>>nova_zivotinja->sifra;
        cout<<"Vrsta->";
        cin>>nova_zivotinja->vrsta;
        cout<<"Naziv-> ";
        cin>>nova_zivotinja->naziv;
        cout<<"Cijena-> ";
        cin>>nova_zivotinja->cijena;
        cout<<"Dan dostave-> ";
        cin>>nova_zivotinja->dan;
        cout<<"Mjesec dostave-> ";
        cin>>nova_zivotinja->mjesec;
        cout<<"Godina dostave-> ";
        cin>>nova_zivotinja->godina;
        while( br>=0 ) {
                if( br==0 ) {
                        InsertL( nova_zivotinja,0,list_head );
                        dodan=true;
                        z_dodan=1;
                        break;
                }//if
                pomocni=RetrieveL( br,list_head );
                if( nova_zivotinja->sifra>pomocni->sifra ) {
                        InsertL( nova_zivotinja,br,list_head );
                        dodan=true;
                        z_dodan=br+1;
                        break;
                }//if
                else{
                        br--;
                }
        }//while
        if( !dodan ){
            return 0;
        }
        return 1;
}

int main()
{
        t*list_head;
        list_head=InitL( list_head );
        int izbor;
        do {
                cout<<"================================"<<endl;
                cout<<"Izbornik-> "<<endl;
                cout<<"1. Nova zivotinja"<<endl;
                cout<<"2. Ispis zivotinja"<<endl;
                cout<<"3. Pretraga"<<endl;
                cout<<"4. Brisanje prema nazivu"<<endl;
                cout<<"5. Brisanje prema vrsti"<<endl;
                cout<<"6. Sortiranje"<<endl;
                cout<<"10. Izlaz"<<endl;
                cin>>izbor;
                if(izbor==1) {
                        int povratak=dodaj_novu(list_head);
                        if(povratak){
                            cout<<"Dodan"<<endl;
                        }
                        else{
                             cout<<"Nije dodan"<<endl;
                        }
                } if(izbor==2)
                        ispis_zivotinja( list_head );
                if(izbor==3)
                        pretraga( list_head );
                if(izbor==4) {
                        int povratak= brisi_sve( list_head,1 );
                        if(povratak){
                            cout<<"Obrisan"<<endl;
                        }
                        else{
                             cout<<"Nije obrisan"<<endl;
                        }
                } if(izbor==5) {
                        int povratak= brisi_sve( list_head,0 );
                        if(povratak) {
                            cout<<"Obrisan"<<endl;
                        }
                        else {
                            cout<<"Nije obrisan"<<endl;
                        }
                } if(izbor==6)
                        sortiraj( list_head );
        }//do
        while( izbor!=10 );
        DeleteAll( list_head );
        return 0;
}

Initial URL


Initial Description
Evidencija životinja

Initial Title
Evidencija životinja - Zadatak_1, strukture podataka

Initial Tags
podataka

Initial Language
C++