Return to Snippet

Revision: 60622
at November 12, 2012 03:26 by nsamonik


Initial Code
#include <iostream>
//#include "pokazivaci.h"
#include "polja.h"
#include <string.h>
#include <windows.h>

using namespace std;

void pretraga( sve_zivotinje*glava_liste )
{
  int brojac=NumberL( glava_liste );
  jedna_zivotinja*tekuci;
  int brojac_dostavljenih=0;
  for( int i=1; i<=brojac; i++ )
  {
    tekuci=RetrieveL( i,glava_liste );
    if( tekuci->godina>2012 )
    {
      IspisL( tekuci );
      brojac_dostavljenih++;
    }
    else if( tekuci->godina==2012&&tekuci->mjesec>9 )
    {
      IspisL( tekuci );
      brojac_dostavljenih++;
    }
    else if( tekuci->godina==2012&&tekuci->mjesec==9&&tekuci->dan>23 )
    {
      IspisL( tekuci );
      brojac_dostavljenih++;
    }
  }
  cout<<"Broj zivotinja dostavljenih nakon 23. rujna 2012: "<<brojac_dostavljenih<<endl;
}

jedna_zivotinja*pomocni=new jedna_zivotinja;
sve_zivotinje*zadnji2=new sve_zivotinje;
int pozicija_zadnje_dodanog=0;

bool brisi_sve( sve_zivotinje*glava_liste,int parametar)
{
  bool obrisano=0;
  if(parametar==0)
    cout<<"Naziv vrste: ";
  else
    cout<<"Naziv zivotinje: ";
  char naziv[40];
  cin.ignore();
  cin.getline( naziv,40 );
  int brojac=NumberL( glava_liste );
  jedna_zivotinja*trenutni;
 while(brojac>0)
  {
    trenutni=RetrieveL( brojac,glava_liste );
    if(parametar==1){
	if( !strcmp( trenutni->naziv,naziv ) )
    {
		cout<<"Brisem!\n";
      DeleteL( brojac,glava_liste );
      brojac--;
      obrisano=1;
    }
    else
    	brojac--;
	}
    else {
    if( !strcmp( trenutni->vrsta,naziv ) )
    {
		cout<<"Brisem!\n";
      DeleteL( brojac,glava_liste );
     brojac--;
      obrisano=1;
    }
    else
      brojac--;
	}
  }
  return obrisano;
}

void spoji_polja( jedna_zivotinja *a[],int low,int sredina_polja,int high )
{
  int brojac_lijevo_polje,brojac_pomocno_polje,brojac_desno_polje,k;
  jedna_zivotinja*pomocno_polje[1000];
  brojac_lijevo_polje=low;
  brojac_pomocno_polje=low;
  brojac_desno_polje=sredina_polja+1;

  while( ( brojac_lijevo_polje<=sredina_polja )&&( brojac_desno_polje<=high ) )
  {
    if( a[brojac_lijevo_polje]->cijena>=a[brojac_desno_polje]->cijena )
    {
      pomocno_polje[brojac_pomocno_polje]=a[brojac_lijevo_polje];
      brojac_lijevo_polje++;
    }  
    else
    {
      pomocno_polje[brojac_pomocno_polje]=a[brojac_desno_polje];
      brojac_desno_polje++;
    }  
    brojac_pomocno_polje++;
  }
  if( brojac_lijevo_polje>sredina_polja )
  {
    for( k=brojac_desno_polje; k<=high; k++ )
    {
      pomocno_polje[brojac_pomocno_polje]=a[k];
      brojac_pomocno_polje++;
    }
  }
  else 
  {
    for( k=brojac_lijevo_polje; k<=sredina_polja; k++ )
    {
      pomocno_polje[brojac_pomocno_polje]=a[k];
      brojac_pomocno_polje++;
    }
  }
  for( k=low; k<=high; k++ ) a[k]=pomocno_polje[k];
}
void mergesort( jedna_zivotinja *a[], int low,int high )
{
  int sredina_polja;
  if( low<high )
  {
    sredina_polja=( low+high )/2;
    mergesort( a,low,sredina_polja ); 
    mergesort( a,sredina_polja+1,high ); 
    spoji_polja( a,low,sredina_polja,high );
  }
}

void sortiraj( sve_zivotinje*glava_liste )
{
  int brojac=NumberL( glava_liste );
  jedna_zivotinja*nova_zivotinja[brojac];
  for( int i=1; i<=brojac; i++ ) {
    nova_zivotinja[i-1]=RetrieveL( i,glava_liste );
  }
  mergesort( nova_zivotinja,0,brojac-1 );
  for( int i=0; i<brojac; i++ )
  {
    IspisL( nova_zivotinja[i] );
  }
}

void ispis_zivotinja( sve_zivotinje*glava_liste )
{
  jedna_zivotinja*tekuci;
  int brojac= NumberL( glava_liste );
  cout<<"Ukupan broj zivotinja: "<<brojac<<endl;
  if( pozicija_zadnje_dodanog==0 ){
      return;
  }
  for( int i=pozicija_zadnje_dodanog; i<=brojac; i++ )
  {
    tekuci=RetrieveL( i,glava_liste );
    IspisL( tekuci );
  }
}

bool dodaj_novu( sve_zivotinje*glava_liste )
{
  int brojac=NumberL( glava_liste );
  bool uspjesno=false;
  jedna_zivotinja*nova_zivotinja=new jedna_zivotinja;
  UnosL( nova_zivotinja );
  while( brojac>=0 )
  {
    if( brojac==0 )
    {
      InsertL( nova_zivotinja,0,glava_liste );
      uspjesno=true;
      pozicija_zadnje_dodanog=1;
      break;
    }//if
    pomocni=RetrieveL( brojac,glava_liste );
    if( nova_zivotinja->sifra>pomocni->sifra )
    {
      InsertL( nova_zivotinja,brojac,glava_liste );
      uspjesno=true;
      pozicija_zadnje_dodanog=brojac+1;
      break;
    }//if
    else
      brojac--;
  }//while
  if( !uspjesno )return 0;
  return 1;
}//dodaj_novu
int main()
{
  uvod();
  sve_zivotinje*glava_liste;//samo inicijaliziramo pokazivac
  glava_liste=InitL( glava_liste );
  int izbor;
  do
  { cout<<"Izbornik: "<<endl;
    cout<<"1. Dodavanje novog zapisa u listu prema rastucoj sifri zivotinje"<<endl;
    cout<<"2. ispis_zivotinja sadrzaja liste pocevsi od sifre zivotinje koja je posljednja dodana"<<endl;
    cout<<"3. Pretraga liste te ispis svih zivotinja koje su dostavljene nakon\n   23.rujna 2012. godine te njihov broj"<<endl;
    cout<<"4. Brisanje pojedinacnih unosa prema nazivu zivotinje"<<endl;
    cout<<"5. Brisanje svih zivotinja odabrane vrste"<<endl;
    cout<<"6. Silazno sortiranje zivotinja prema cijeni i nazivu"<<endl;
    cout<<"7. Izlaz"<<endl;
    cin>>izbor;
    system( "cls" );
    switch( izbor )
    {
    case 1:
      if( dodaj_novu( glava_liste )==1 ) {
        cout<<"Zapis uspjesno dodan"<<endl;
      }
      else {
        cout<<"Zapis nije uspjesno dodan!"<<endl;
      }
      break;
    case 2:
      ispis_zivotinja( glava_liste );
      break;
    case 3:
      pretraga( glava_liste );
      break;
    case 4:
      if( brisi_sve( glava_liste,1 )==1 ) {
        cout<<"Uspjesno obrisano"<<endl;
      }
      else {
        cout<<"Nije uspjesno obrisano"<<endl;
      }
      break;
    case 5:
      if( brisi_sve( glava_liste,0 )==1 ) {
        cout<<"Uspjesno obrisano"<<endl;
      }
      else {
        cout<<"Nije uspjesno obrisano"<<endl;
      }
      break;
    case 6:
      sortiraj( glava_liste );
    } //switch
    system( "pause" );
    system( "cls" );
  }//do
  while( izbor!=7 );
  DeleteAll( glava_liste );
  return 0;
}

Initial URL


Initial Description
Ovo je main funkcija koja sadrzi izbornik koji se sastoji od raznih mogunosti poput: Dodavanja, brisanja, sortiranja i pretrazivanja zivotinja koje se nalaze u listi.

Initial Title
Evidencija zivotinja u ducanu s kucnim ljubimcima

Initial Tags


Initial Language
C++