Revision: 60622
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
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++