Revision: 60541
Updated Code
at November 11, 2012 19:40 by milan_pavlovic
Updated Code
#include <iostream>
#include <cstring>
//#include "lista_polje.h"
#include "lista_pokazivac.h"
using namespace std;
int nova_zivotinja() {
elem novi;
novi.sifra=sifra++;
cout<<"Vrsta: ";
cin.ignore();
cin.getline(novi.vrsta,35);
cout<<"Naziv: ";
cin.getline(novi.naziv,35);
cout<<"Cijena: ";cin>>novi.cijena;
if(novi.cijena<=0) {sifra--;return 0;}
cout<<"Unesite datum dostave:\n";
cout<<"Dan: ";cin>>novi.datum.dan;
if(novi.datum.dan<=0||novi.datum.dan>31) {sifra--;return 0;}
cout<<"Mjesec: ";
cin.ignore();
cin.getline(novi.datum.mjesec,10);
if(novi.datum.dan>29&&!strcmp(novi.datum.mjesec,"veljaca")) {sifra--;return 0;}
cout<<"Godina: ";cin>>novi.datum.godina;
if(novi.datum.godina<1900||novi.datum.godina>2012) {sifra--;return 0;}
InsertL(novi,br_elem,lista);
br_elem++;
return 1;
}
void ispis_od_posljednjeg() {
elem a;
int k=0;
int p = PreviousL(EndL(lista),lista);
while(k<br_elem){
a=RetrieveL(p,lista);
cout<<"Sifra: "<<a.sifra<<endl;
cout<<"Vrsta: "<<a.vrsta<<endl;
cout<<"Naziv: "<<a.naziv<<endl;
cout<<"Cijena: "<<a.cijena<<endl;
cout<<"Datum: "<<a.datum.dan<<".";
cout<<a.datum.mjesec<<"."<<a.datum.godina<<".\n";
cout<<"-------------------------------\n";
p = PreviousL(p,lista);
k++;
}
}
void ispis_datum() {
int br=0;
elem a;
int p = FirstL(lista);
while(p!=EndL(lista)) {
a = RetrieveL(p,lista);
if(a.datum.godina>=2012)
if((!strcmp(a.datum.mjesec,"rujan")&&a.datum.dan>23)||!strcmp(a.datum.mjesec,"listopad")||
!strcmp(a.datum.mjesec,"studeni")||!strcmp(a.datum.mjesec,"prosinac")) {
br++;
cout<<"Sifra: "<<a.sifra<<endl;
cout<<"Vrsta: "<<a.vrsta<<endl;
cout<<"Naziv: "<<a.naziv<<endl;
cout<<"Cijena: "<<a.cijena<<endl;
cout<<"Datum: "<<a.datum.dan<<"."<<a.datum.mjesec<<"."<<a.datum.godina<<".\n";
cout<<"------------------------------\n";
}
p = NextL(p,lista);
}
cout<<"Broj pronadjenih zivotinja: "<<br<<endl<<endl;
}
int brisi_naziv() {
char naziv[35];
cout<<"Unesite naziv zivotinje: ";
cin.ignore();
cin.getline(naziv,35);
int p = LocateL(naziv,lista);
if(p==EndL(lista)) return 0;
else {
DeleteL(p,lista);
br_elem--;
return 1;
}
}
int brisi_vrsta() {
char vrsta[35];
int p;
bool obrisan=0;
v=1;
cout<<"Unesite vrstu zivotinje: ";
cin.ignore();
cin.getline(vrsta,35);
while (LocateL(vrsta,lista)!=EndL(lista)) {
p = LocateL(vrsta,lista);
DeleteL(p,lista);
br_elem--;
obrisan=1;
}
v=0;
if(!obrisan) return 0;
else return 1;
}
void ispis() {
elem a;
int p=FirstL(lista);
while (p!=EndL(lista)){
a=RetrieveL(p,lista);
cout<<"Sifra: "<<a.sifra<<endl;
cout<<"Vrsta: "<<a.vrsta<<endl;
cout<<"Naziv: "<<a.naziv<<endl;
cout<<"Cijena: "<<a.cijena<<endl;
cout<<"Datum: "<<a.datum.dan<<".";
cout<<a.datum.mjesec<<"."<<a.datum.godina<<".\n";
cout<<"-------------------------------\n";
p = NextL(p,lista);
}
}
void spoji(int i, int k, int j) {
int I=i, J=k+1, K=0;
elem *b = new elem [j-i+1];
elem prvi,drugi;
while(I<=k && J<=j){
prvi=RetrieveL(I,lista);
drugi=RetrieveL(J,lista);
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,lista);
b[K++] = drugi;
J++;
}
else while(I<=k) {
prvi=RetrieveL(I,lista);
b[K++] = prvi;
I++;
}
for(int I=0;I<=j-i;I++) Vrati(b[I],i+I,lista);
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,br_elem-1);
}
int main() {
int izbor;
InitL(lista);
do {
cout<<"1. Dodaj zivotinju\n";
cout<<"2. Ispis od posljednje dodane\n";
cout<<"3. Ispis dodanih nakon 23. rujna 2012.\n";
cout<<"4. Brisanje pojedinacne zivotinje (po nazivu)\n";
cout<<"5. Brisanje po vrsti\n";
cout<<"6. Silazno sortiranje po cijeni (ili nazivu)\n";
cout<<"9. Izlaz\n";
cin>>izbor;
switch(izbor) {
case 1:
if(nova_zivotinja()) cout<<"Zapis je uspjesno dodan.\n";
else cout<<"Pogresan unos\n";
break;
case 2:ispis_od_posljednjeg();break;
case 3:ispis_datum();break;
case 4:
if(brisi_naziv()) {
cout<<"\nZivotinja je obrisana.\n\n";
ispis();
}
else cout<<"\nZivotinja nije uspjesno obrisana.\nUnijeli ste pogresan naziv ili zapis ne postoji.\n\n";break;
case 5:
if(brisi_vrsta()) {
cout<<"\nVrsta je obrisana.\n\n";
ispis();
}
else cout<<"Vrsta nije uspjesno obrisana.\nUnijeli ste pogresan naziv ili zapis ne postoji.\n\n";break;
case 6:
msort();
ispis();
break;
}
}while(izbor!=9);
DeleteAll(lista);
system("pause");
return 0;
}
Revision: 60540
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 11, 2012 06:42 by milan_pavlovic
Initial Code
#include <iostream>
#include <cstring>
//#include "lista_polje.h"
#include "lista_pokazivac.h"
using namespace std;
int nova_zivotinja() {
elem novi;
novi.sifra=sifra++;
cout<<"Vrsta: ";
cin.ignore();
cin.getline(novi.vrsta,35);
cout<<"Naziv: ";
cin.getline(novi.naziv,35);
cout<<"Cijena: ";cin>>novi.cijena;
if(novi.cijena<=0) {sifra--;return 0;}
cout<<"Unesite datum dostave:\n";
cout<<"Dan: ";cin>>novi.datum.dan;
if(novi.datum.dan<=0||novi.datum.dan>31) {sifra--;return 0;}
cout<<"Mjesec: ";
cin.ignore();
cin.getline(novi.datum.mjesec,10);
if(novi.datum.dan>29&&!strcmp(novi.datum.mjesec,"veljaca")) {sifra--;return 0;}
cout<<"Godina: ";cin>>novi.datum.godina;
if(novi.datum.godina<1900||novi.datum.godina>2012) {sifra--;return 0;}
InsertL(novi,br_elem,lista);
br_elem++;
return 1;
}
void ispis_od_posljednjeg() {
elem a;
int k=0;
int p = PreviousL(EndL(lista),lista);
while(k<br_elem){
a=RetrieveL(p,lista);
cout<<"Sifra: "<<a.sifra<<endl;
cout<<"Vrsta: "<<a.vrsta<<endl;
cout<<"Naziv: "<<a.naziv<<endl;
cout<<"Cijena: "<<a.cijena<<endl;
cout<<"Datum: "<<a.datum.dan<<".";
cout<<a.datum.mjesec<<"."<<a.datum.godina<<".\n";
cout<<"-------------------------------\n";
p = PreviousL(p,lista);
k++;
}
}
void ispis_datum() {
int br=0;
elem a;
int p = FirstL(lista);
while(p!=EndL(lista)) {
a = RetrieveL(p,lista);
if(a.datum.godina>=2012)
if((!strcmp(a.datum.mjesec,"rujan")&&a.datum.dan>23)||!strcmp(a.datum.mjesec,"listopad")||
!strcmp(a.datum.mjesec,"studeni")||!strcmp(a.datum.mjesec,"prosinac")) {
br++;
cout<<"Sifra: "<<a.sifra<<endl;
cout<<"Vrsta: "<<a.vrsta<<endl;
cout<<"Naziv: "<<a.naziv<<endl;
cout<<"Cijena: "<<a.cijena<<endl;
cout<<"Datum: "<<a.datum.dan<<"."<<a.datum.mjesec<<"."<<a.datum.godina<<".\n";
cout<<"------------------------------\n";
}
p = NextL(p,lista);
}
cout<<"Broj pronadjenih zivotinja: "<<br<<endl<<endl;
}
int brisi_naziv() {
char naziv[35];
elem a;
cout<<"Unesite naziv zivotinje: ";
cin.ignore();
cin.getline(naziv,35);
int p = LocateL(naziv,lista);
if(p==EndL(lista)) return 0;
else {
DeleteL(p,lista);
br_elem--;
return 1;
}
}
int brisi_vrsta() {
char vrsta[35];
elem a;
int p;
bool obrisan=0;
v=1;
cout<<"Unesite vrstu zivotinje: ";
cin.ignore();
cin.getline(vrsta,35);
while (LocateL(vrsta,lista)!=EndL(lista)) {
p = LocateL(vrsta,lista);
DeleteL(p,lista);
br_elem--;
obrisan=1;
}
v=0;
if(!obrisan) return 0;
else return 1;
}
void ispis() {
elem a;
int p=FirstL(lista);
while (p!=EndL(lista)){
a=RetrieveL(p,lista);
cout<<"Sifra: "<<a.sifra<<endl;
cout<<"Vrsta: "<<a.vrsta<<endl;
cout<<"Naziv: "<<a.naziv<<endl;
cout<<"Cijena: "<<a.cijena<<endl;
cout<<"Datum: "<<a.datum.dan<<".";
cout<<a.datum.mjesec<<"."<<a.datum.godina<<".\n";
cout<<"-------------------------------\n";
p = NextL(p,lista);
}
}
void spoji(int i, int k, int j) {
int I=i, J=k+1, K=0;
elem *b = new elem [j-i+1];
elem prvi,drugi;
while(I<=k && J<=j){
prvi=RetrieveL(I,lista);
drugi=RetrieveL(J,lista);
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,lista);
b[K++] = drugi;
J++;
}
else while(I<=k) {
prvi=RetrieveL(I,lista);
b[K++] = prvi;
I++;
}
for(int I=0;I<=j-i;I++) Vrati(b[I],i+I,lista);
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,br_elem-1);
}
int main() {
int izbor;
InitL(lista);
do {
cout<<"1. Dodaj zivotinju\n";
cout<<"2. Ispis od posljednje dodane\n";
cout<<"3. Ispis dodanih nakon 23. rujna 2012.\n";
cout<<"4. Brisanje pojedinacne zivotinje (po nazivu)\n";
cout<<"5. Brisanje po vrsti\n";
cout<<"6. Silazno sortiranje po cijeni (ili nazivu)\n";
cout<<"9. Izlaz\n";
cin>>izbor;
switch(izbor) {
case 1:
if(nova_zivotinja()) cout<<"Zapis je uspjesno dodan.\n";
else cout<<"Pogresan unos\n";
break;
case 2:ispis_od_posljednjeg();break;
case 3:ispis_datum();break;
case 4:
if(brisi_naziv()) {
cout<<"\nZivotinja je obrisana.\n\n";
ispis();
}
else cout<<"\nZivotinja nije uspjesno obrisana.\nUnijeli ste pogresan naziv ili zapis ne postoji.\n\n";break;
case 5:
if(brisi_vrsta()) {
cout<<"\nVrsta je obrisana.\n\n";
ispis();
}
else cout<<"Vrsta nije uspjesno obrisana.\nUnijeli ste pogresan naziv ili zapis ne postoji.\n\n";break;
case 6:
msort();
ispis();
break;
}
}while(izbor!=9);
DeleteAll(lista);
system("pause");
return 0;
}
Initial URL
Initial Description
Glavno programsko rješenje zadatka izrade programa za evidenciju životinja u trgovini kućnim ljubimcima. Fakultet organizacije i informatike Varaždin Kolegij: Strukture podataka
Initial Title
ATP Lista - glavni program
Initial Tags
data, list, podataka
Initial Language
C++