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