Revision: 60612
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 12, 2012 02:57 by sabramov1
Initial Code
#include <iostream>
//#include "lista_polje.h"
#include "lista_pokazivac.h"
using namespace std;
bool Unos_Elemenata(Lista*);
void Ispis_Elemenata(Lista*);
void Trazi(Lista*);
bool Brisi_Vrsta(Lista*);
bool Brisati_Element(Lista*);
void Sortiranje(Lista*);
int main() {
int Izbor;
Lista* Element=new Lista;
InitL(Element);
do{
system("cls");
cout<<"1: za unos zivotinja"<<endl;
cout<<"2: za ispis zivotinja "<<endl;
cout<<"3: za pretrazivanje"<<endl;
cout<<"4: za brisanje po nazivu"<<endl;
cout<<"5: za brisanje po vrsti"<<endl;
cout<<"6: za sortiranje"<<endl;
cout<<"0: izlaz iz programa "<<endl;
cout<<endl;
cout<< endl << "\nIzaberi: ";
cin >> Izbor;
if(Izbor==1)
if (Unos_Elemenata(Element)) cout << "Zapis dodan." << endl;
if(Izbor==2)
Ispis_Elemenata(Element);
if(Izbor==3)
Trazi(Element);
if(Izbor==4)
Brisati_Element(Element);
if(Izbor==5)
Brisi_Vrsta(Element);
if(Izbor==6)
Sortiranje(Element);
}while (Izbor!=0);
return 0;
}
bool Unos_Elemenata(Lista* Glava) {
static int Sifra=100;
zivotinja* Novi=new zivotinja;
cout << endl << "Naziv zivotinje: ";
cin.ignore();
cin.getline(Novi->Naziv, 50);
cout << "Vrsta: ";
cin.getline(Novi->Vrsta, 50);
cout << "Datum (DD MM YYYY): ";
cin >> Novi->datum_dostave.Dan >> Novi->datum_dostave.Mjesec >> Novi->datum_dostave.Godina;
cout << "Cijena: ";
cin >> Novi->Cijena;
Novi->Sifra=Sifra++;
return InsertL(*Novi, EndL(Glava), Glava);
}
bool Usporedi( char* Prvi, char* Drugi, int Broj_1, int Broj_2) {
if(Broj_1!=Broj_2) return false;
for (int i=0; i<Broj_1; i++)
if(Prvi[i]!=Drugi[i]) return false;
return true;
}
bool Brisati_Element(Lista* L) {
cout << endl << "Naziv: ";
char Naziv[50];
cin.ignore();
cin.getline(Naziv, 50);
zivotinja Zivotinja_1;
for(el Trenutni=FirstL(L); Trenutni!=EndL(L); Trenutni=NextL(Trenutni, L)) {
Zivotinja_1=RetrieveL(Trenutni, L);
if(Usporedi(Naziv, Zivotinja_1.Naziv, strlen(Naziv), strlen(Zivotinja_1.Naziv))) {
if(DeleteL(LocateL(Zivotinja_1, L), L)==-1) return 0;
else return 1;
}
}
return 0;
}
bool Brisi_Vrsta(Lista* L) {
int Brojac=0;
cout << endl << "Vrsta: ";
char Vrsta[50];
cin.ignore();
cin.getline(Vrsta, 50);
zivotinja Zivoinja_1;
for(el Trenutni=FirstL(L); Trenutni!=EndL(L); ) {
Zivoinja_1=RetrieveL(Trenutni, L);
if(Usporedi(Vrsta, Zivoinja_1.Vrsta, strlen(Vrsta), strlen(Zivoinja_1.Vrsta)))
if(DeleteL(LocateL(Zivoinja_1, L), L)) {
Brojac++;
continue;
}
Trenutni=NextL(Trenutni, L);
}
if(Brojac)
return 1;
else return 0;
}
int Broj_Elemenata(Lista* L) {
int Broj=0;
for(el Trenutni=FirstL(L); Trenutni!=EndL(L); Trenutni=NextL(Trenutni, L)) Broj++;
return Broj;
}
bool usporedi(zivotinja Element_1, zivotinja Element_2) {
if(Element_1.Cijena<Element_2.Cijena) return true;
if(Element_1.Cijena==Element_2.Cijena) {
int temp=(strlen(Element_1.Naziv)<strlen(Element_2.Naziv)) ? strlen(Element_1.Naziv) : strlen(Element_2.Naziv);
for(int I=0; I<temp; I++)
if(Element_1.Naziv[I]>Element_2.Naziv[I]) return false;
else if(Element_1.Naziv[I]<Element_2.Naziv[I]) return true;
}
return false;
}
void Merge(zivotinja Polje[], int I, int K, int J) {
int Pol_1=I;
int Pol_2=K+1;
int temp=0;
zivotinja* Drugo_polje=new zivotinja[J-I+1];
while(Pol_1<=K && Pol_2<=J)
if(usporedi(Polje[Pol_1], Polje[Pol_2])) Drugo_polje[temp++]=Polje[Pol_1++];
else Drugo_polje[temp++]=Polje[Pol_2++];
if(Pol_1>K)
while(Pol_2<=J) Drugo_polje[temp++]=Polje[Pol_2++];
else
while(Pol_1<=K) Drugo_polje[temp++]=Polje[Pol_1++];
for(int X=I; X<=J; X++) Polje[X]=Drugo_polje[X-I];
delete[] Drugo_polje;
}
void Merge_Sort(zivotinja Novo_polje[], int I, int J) {
if(I<J) {
int K=(I+J)/2;
Merge_Sort(Novo_polje, I, K);
Merge_Sort(Novo_polje, K+1, J);
Merge(Novo_polje, I, K, J);
}
}
void Merge_Sort(zivotinja Novo_polje[], int Broj) {
Merge_Sort(Novo_polje, 0, Broj-1);
}
void Sortiranje(Lista* L){
int Broj_elemenata=Broj_Elemenata(L), I=0;
zivotinja* Novi=new zivotinja[Broj_elemenata];
for(el Novo=FirstL(L); Novo!=EndL(L); Novo=NextL(Novo, L))
Novi[I++]=RetrieveL(Novo, L);
DeleteAllL(L);
Merge_Sort(Novi, Broj_elemenata);
for(int I=0; I<Broj_elemenata; I++)
InsertL(Novi[I], FirstL(L), L);
delete[] Novi;
}
void Ispis_Elemenata(Lista* L) {
cout << "Ispis: " << endl;
for (el Trenutni=EndL(L); (Trenutni=PreviousL(Trenutni, L))!=NULL; )
cout << RetrieveL(Trenutni, L) << endl;
cin.ignore();
cout << "\n Pritisni bilo sto za dalje.";
cin.get();
}
void Trazi(Lista* L) {
zivotinja Zivotinja;
int Brojac=0;
for (el Trenutni=FirstL(L); Trenutni!=EndL(L); Trenutni=NextL(Trenutni, L)) {
Zivotinja=RetrieveL(Trenutni, L);
int Datum=(Zivotinja.datum_dostave.Godina*10000)+(Zivotinja.datum_dostave.Mjesec*100)+Zivotinja.datum_dostave.Dan;
if (Datum>20120923){
cout << Zivotinja << endl;
Brojac++;
}
}
cout << "Ukupno zivotinja koje su dostavljenje poslije 23. rujna 2012: " << Brojac;
cin.ignore();
cout << "Pritisni bilo sto za dalje.";
cin.get();
}
Initial URL
Initial Description
Kod je vrlo jednostavan. U izborniku mozemo vidjeti zaglavlje lista_polje.h i lista_pokazivac.h. Ovisno kako zelimo da program radi, stavljamo jedan od headera u komenat posto obje implementacije koriste iste funkcije.
Initial Title
Zadatak 1: main_ Abramov_Suzana
Initial Tags
Initial Language
C++