Revision: 60738
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 12, 2012 08:23 by majcen555
Initial Code
#include <cstdlib>
#include <iostream>
//#include "lista_polje_mm.h"
#include "lista_pokazivac_mm.h"
using namespace std;
int upisi() {
objekt novi;
cout<<"Vrsta zivotinje: ";
cin.ignore();
cin.getline(novi.vrsta,30);
cout<<"Naziv zivotinje: ";
cin.getline(novi.naziv,30);
novi.sifra=sifra++;
cout<<"Cijena zivotinje: ";
cin>>novi.cijena;
if(novi.cijena<=0) {
sifra--;
return 0;}
cout<<"Datum dostave:"<<endl;
cout<<"Unesite dan: ";
cin>>novi.datum.dan;
if(novi.datum.dan<=0||novi.datum.dan>31) {
sifra--;
return 0;}
cout<<"Unesite mjesec: ";
cin>>novi.datum.mjesec;
if(novi.datum.mjesec<=0||novi.datum.mjesec>12) {
sifra--;
return 0;}
cout<<"Unesite godinu: ";
cin>>novi.datum.godina;
if(novi.datum.godina>2012) {
sifra--;
return 0;}
InsertL(novi,br_objekt,LA);
br_objekt++;
return 1;
}
void ispis_zivotinja() {
objekt ziv;
int brojac=0;
int p = PreviousL(EndL(LA),LA);
while(brojac<br_objekt){
ziv=RetrieveL(p,LA);
cout<<"=====================\n";
cout<<"Sifra zivotinje: ";
cout<<ziv.sifra<<endl;
cout<<"Vrsta zivotinje: ";
cout<<ziv.vrsta<<endl;
cout<<"Naziv zivotinje: ";
cout<<ziv.naziv<<endl;
cout<<"Cijena zivotinje: ";
cout<<ziv.cijena<<endl;
cout<<"Datum: ";
cout<<ziv.datum.dan<<".";
cout<<ziv.datum.mjesec<<".";
cout<<ziv.datum.godina<<endl;
cout<<"=====================\n";
p = PreviousL(p,LA);
brojac++;
} //while
} //ispis_zivotinja
void jesensko_vrijeme() {
int brojac=0;
objekt ziv;
int p = FirstL(LA);
while(p!=EndL(LA)) {
ziv = RetrieveL(p,LA);
if((ziv.datum.godina==2012&&ziv.datum.mjesec==9&&ziv.datum.dan>23)
||ziv.datum.godina==2012&&ziv.datum.mjesec>9)
{
cout<<"Sifra zivotinje: ";
cout<<ziv.sifra<<endl;
cout<<"Vrsta zivotinje: ";
cout<<ziv.vrsta<<endl;
cout<<"Naziv zivotinje: ";
cout<<ziv.naziv<<endl;
cout<<"Cijena zivotinje: ";
cout<<ziv.cijena<<endl;
cout<<"Datum zivotinje: ";
cout<<ziv.datum.dan;
cout<<"."<<ziv.datum.mjesec;
cout<<"."<<ziv.datum.godina<<endl;
cout<<"================"<<endl;
brojac++;
} //if
p = NextL(p,LA);
} //while
cout<<"Ukupan broj zivotinja dostavljenih nakon 23. rujna 2012: ";
cout<<brojac<<endl<<endl;
} //ispis_datum
int obrisi_naziv() {
char naziv[30];
objekt ziv;
cout<<"Unesite naziv zivotinje koju zelite obrisati: ";
cin.ignore();
cin.getline(naziv,30);
int p = LocateL(naziv,LA);
if(p==EndL(LA)) return 0;
else {
DeleteL(p,LA);
br_objekt--;
return 1;
}
}
int obrisi_vrstu() {
char vrsta[30];
objekt ziv;
int p;
bool obrisan=0;
v=1;
cout<<"Unesite vrstu zivotinje koju zelite obrisati: ";
cin.ignore();
cin.getline(vrsta,30);
while (LocateL(vrsta,LA)!=EndL(LA)) {
p = LocateL(vrsta,LA);
DeleteL(p,LA);
br_objekt--;
obrisan=1;
}
if(!obrisan) return 0;
else return 1;
}
void ispis() {
objekt ziv;
int p=FirstL(LA);
while (p!=EndL(LA)){
ziv=RetrieveL(p,LA);
cout<<"Sifra zivotinje: ";
cout<<ziv.sifra<<endl;
cout<<"Vrsta zivotinje: ";
cout<<ziv.vrsta<<endl;
cout<<"Naziv zivotinje: ";
cout<<ziv.naziv<<endl;
cout<<"Cijena zivotinje: ";
cout<<ziv.cijena<<endl;
cout<<"Datum zivotinje: ";
cout<<ziv.datum.dan<<".";
cout<<ziv.datum.mjesec<<".";
cout<<ziv.datum.godina<<endl;
cout<<"================="<<endl;
p = NextL(p,LA);
}
}
void spoji(objekt A[], int poc, int sre, int kra)
{
int n;
int I=poc, J=sre+1, K=0;
objekt *B = new objekt [kra-poc+1];
while (I <= sre && J <= kra)
if (A[I].cijena<A[J].cijena)
memcpy(&B[K++], &A[I++], sizeof(objekt) );
else if (A[I].cijena == A[J].cijena)
{
if (strcmp((A[I].naziv),(A[J].naziv))<0)
memcpy(&B[K++], &A[I++], sizeof(objekt) );
else
memcpy(&B[K++], &A[J++], sizeof(objekt) );
}
else
memcpy(&B[K++], &A[J++], sizeof(objekt) );
if (I>sre)
while (J <= kra)
memcpy(&B[K++], &A[J++], sizeof(objekt) );
else
while (I<=sre)
memcpy(&B[K++], &A[I++], sizeof(objekt) );
for (int I = 0; I <=kra-poc; I++)
memcpy(&A[poc+I], &B[I], sizeof(objekt) );
delete []B;
}
void MSort (objekt *A, int poc, int kra)
{
if (poc<kra)
{
int sre=(poc+kra)/2;
MSort(A,poc,sre);
MSort (A, sre+1, kra);
spoji (A,poc,sre,kra);
}
}
void MSort (objekt A[], int N)
{
MSort (A,0,N-1);
}
void sort (lis *LA)
{
objekt novi[1000];
int pozicija=FirstL(LA); //za pok
int n=0;
while (pozicija!=EndL(LA))
{
novi[n]=RetrieveL(pozicija,LA);
pozicija=NextL(pozicija,LA);
n++;
}
MSort (novi,n);
int i=0;
n=n-1;
for(n; n>=i; n--)
{
cout<<endl;
cout << "Sifra: " << novi[n].sifra << endl;
cout << "Naziv: " << novi[n].naziv << endl;
cout << "Vrsta: " << novi[n].vrsta << endl;
cout << "Cijena: " << novi[n].cijena << endl;
cout<< "Datum: " <<novi[n].datum.dan<<".";
cout<<novi[n].datum.mjesec<<".";
cout<<novi[n].datum.godina<<endl;
cout<<endl;
}
}
int main() {
int izbor;
InitL(LA);
do {
cout<<"********************IZBORNIK*************************"<<endl;
cout<<"====================================================="<<endl;
cout<<"1. Dodaj zapis"<<endl;
cout<<"2. Ispis liste (od zadnje dodane zivotinje)"<<endl;
cout<<"3. Ispis zivotinja dostavljenih nakon 23. rujna 2012"<<endl;
cout<<"4. Brisanje zivotinje prema nazivu"<<endl;
cout<<"5. Brisanje zivotinje prema vrsti"<<endl;
cout<<"6. Silazno sortiranje po cijeni ili nazivu"<<endl;
cout<<"7. Izlaz iz programa"<<endl;
cout<<"====================================================="<<endl;
cin>>izbor;
switch(izbor) {
case 1:
if(upisi()) cout<<"Zapis je zabiljezen.\n";
else cout<<"Pogresan unos\n";
break;
case 2:ispis_zivotinja();
break;
case 3:jesensko_vrijeme();
break;
case 4:
if(obrisi_naziv()) {
cout<<"\nObrisana je.\n\n";
ispis();
}
else cout<<"\nZivotinja nije obrisana.\n\n";
break;
case 5:
if(obrisi_vrstu()) {
cout<<"\nObrisana je.\n\n";
ispis();
}
else cout<<"Zivotinja nije uspjesno obrisana.\n\n";
break;
case 6: sort(LA);
break;
}
}while(izbor!=7);
system("PAUSE");
return EXIT_SUCCESS;
}
Initial URL
http://e.foi.hr/wiki/strukture_podataka/index.php/Zadatak_1_Majcen_Marko
Initial Description
Program koji će evidentirati životinje u trgovini sa kućnim ljubimcima. Zapis treba sadržavati sljedeće podatke: Å¡ifru, vrstu, naziv, cijenu i datum dostave. Na poÄetku testiranja programa potrebno je pohraniti minimalno pet razliÄitih zapisa u listu pri Äemu naziv i vrstu životinja odabirete samostalno. Program treba raditi neovisno o implementaciji liste.
Initial Title
SP_Zadatak1_main_MM
Initial Tags
Initial Language
C++