Revision: 60791
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 12, 2012 09:47 by Jurij
Initial Code
#include <iostream>
#include <cstring>
#include "lista_polje.h"
//#include "lista_pokazivac.h"
using namespace std;
int unos() {
zapis novi;
novi.sifra=sifra++;
cout<<"Vrsta: ";
cin.ignore();
cin.getline(novi.vrsta,20);
cout<<"Naziv: ";
cin.getline(novi.naziv,20);
cout<<"Cijena: ";cin>>novi.cijena;
if(novi.cijena<=0) {sifra--;return 0;}
cout<<"Datum dostave zivotinje"<<endl;
cout<<"Dan: ";cin>>novi.datum.d;
if(novi.datum.d<=0||novi.datum.d>31) {sifra--;return 0;}
cout<<"Mjesec: ";
cin>>novi.datum.m;
if(novi.datum.m<=0||novi.datum.m>12) {sifra--;return 0;}
cout<<"Godina: ";cin>>novi.datum.g;
if(novi.datum.g<1990||novi.datum.g>2012) {sifra--;return 0;}
InsertL(novi,n,L);
n++;
return 1;
}
void ispis_silaz() {
zapis h;
int k=0;
int p = PreviousL(EndL(L),L);
while(k<n){
h=RetrieveL(p,L);
cout<<"Sifra: "<<h.sifra<<endl;
cout<<"Vrsta: "<<h.vrsta<<endl;
cout<<"Naziv: "<<h.naziv<<endl;
cout<<"Cijena: "<<h.cijena<<endl;
cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl;
cout<<"-------------------------------"<<endl;
p = PreviousL(p,L);
k++;
}
}
void ispis_datum() {
int k=0;
zapis h;
int p = FirstL(L);
while(p!=EndL(L)) {
h = RetrieveL(p,L);
if(h.datum.g=2012 && h.datum.m>=9 && h.datum.d>=23)
{
k++;
cout<<"Sifra: "<<h.sifra<<endl;
cout<<"Vrsta: "<<h.vrsta<<endl;
cout<<"Naziv: "<<h.naziv<<endl;
cout<<"Cijena: "<<h.cijena<<endl;
cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl;
cout<<"------------------------------"<<endl;
}
if(h.datum.g=2012 && h.datum.m>9)
{
k++;
cout<<"Sifra: "<<h.sifra<<endl;
cout<<"Vrsta: "<<h.vrsta<<endl;
cout<<"Naziv: "<<h.naziv<<endl;
cout<<"Cijena: "<<h.cijena<<endl;
cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl;
cout<<"------------------------------"<<endl;
}
p = NextL(p,L);
}
cout<<"Broj pronadjenih zivotinja: "<<k<<endl<<endl;
}
int brisi_naziv() {
char naziv[20];
cout<<"Unesite naziv zivotinje: ";
cin.ignore();
cin.getline(naziv,20);
int p = LocateL(naziv, L);
if(p==EndL(L))return 0;
else {
DeleteL(p,L);
n--;
return 1;
}
}
int brisi_vrsta() {
char vrsta[20];
int p;
bool gotovo=0;
cout<<"Unesite vrstu zivotinje: ";
cin.ignore();
cin.getline(vrsta,20);
while (LocateL(vrsta,L)!=EndL(L)) {
p = LocateL(vrsta,L);
DeleteL(p,L);
n--;
gotovo=1;
}
if(!gotovo) return 0;
else return 1;
}
void ispis() {
zapis h;
int p=FirstL(L);
while (p!=EndL(L)){
h=RetrieveL(p,L);
cout<<"Sifra: "<<h.sifra<<endl;
cout<<"Vrsta: "<<h.vrsta<<endl;
cout<<"Naziv: "<<h.naziv<<endl;
cout<<"Cijena: "<<h.cijena<<endl;
cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl;
cout<<"-------------------------------"<<endl;
p = NextL(p,L);
}
}
void spoji(int i, int k, int j) {
int I=i, J=k+1, K=0;
zapis *b = new zapis[j-i+1];
zapis prvi,drugi;
while(I<=k && J<=j){
prvi=RetrieveL(I,L);
drugi=RetrieveL(J,L);
if(prvi.cijena > drugi.cijena) {
b[K++]=prvi;
I++;
}
else if(prvi.cijena < drugi.cijena){
b[K++]=drugi;
J++;
}
else if(strcmp(prvi.naziv,drugi.naziv)==-1) {
b[K++]=drugi;
J++;
}
else {
b[K++]=prvi;
I++;
}
}
if(I>k) while(J<=j) {
drugi=RetrieveL(J,L);
b[K++] = drugi;
J++;
}
else while(I<=k) {
prvi=RetrieveL(I,L);
b[K++] = prvi;
I++;
}
for(int I=0;I<=j-i;I++) L.podaci[i+I]=b[I];
delete [] b;
}
void msort(int i, int j) {
if(i<j) {
int k=(i+j)/2;
msort(i,k);
msort(k+1,j);
spoji(i,k,j);
}
}
void msort() {
msort(0,n-1);
}
int main() {
int izbor;
InitL(L);
do {
cout<<"1. Unos nove zivotinje"<<endl;
cout<<"2. Ispis zivotinja od zadnjeg unosa prema prvom"<<endl;
cout<<"3. Ispis zivotinja dodanih nakon 23. 09. 2012."<<endl;
cout<<"4. Brisanje zivotinje unosom naziva"<<endl;
cout<<"5. Brisanje cijele vrste zivotinja"<<endl;
cout<<"6. Silazno merge sortiranje, po cijeni"<<endl;
cout<<"0. Izlaz"<<endl;
cin>>izbor;
switch(izbor) {
case 1:
if(unos())cout<<"Zapisano je."<<endl;
else cout<<"Krivi unos"<<endl;
break;
case 2:
ispis_silaz();
cout<<endl;
break;
case 3:
ispis_datum();
cout<<endl;
break;
case 4:
if(brisi_naziv()) {
cout<<"Uspjesno obrisano."<<endl;
ispis();
}
else cout<<"Neuspjeh. Krivi naziv ili takav naziv ne postoji"<<endl;
break;
case 5:
if(brisi_vrsta()) {
cout<<"Uspjesno obrisano."<<endl;
ispis();
}
else cout<<"Neuspjeh. Krivo ime vrste ili takva vrsta ne postoji";
break;
case 6:
msort();
ispis();
cout<<endl;
break;
}
}while(izbor!=0);
system("pause");
return 0;
}
Initial URL
Initial Description
main dio programa za prvi zadatak
Initial Title
Evidencija zivotinja main
Initial Tags
list
Initial Language
C++