Revision: 60581
Updated Code
at November 12, 2012 00:31 by supavkovii
Updated Code
#include <iostream>
#include <cstdlib>
#include <cstring>
//#include "lista_polje2.h"
#include "lista_pokazivaci.h"
using namespace std;
int sifra=10000;
bool dodavanje(zivotinja *lista){
pomocna pom;
pom.sifra=sifra++;
cout<<"Unesite podatke\n";
cout<<"Sifra: " << pom.sifra << endl;
cout<<"Cijena: ";
cin>>pom.cijena;
cout<<"Unesite datum u obliku dd/mm/gggg : ";
cin.ignore();
cin.getline(pom.datum,15);
cout<<"Vrsta zivotinje: ";
cin.getline(pom.vrsta,20);
cout<<"Naziv zivotinje: ";
cin.getline(pom.naziv,15);
tip p=EndL(lista);
/*if(PreviousL(p,lista))
p=PreviousL(p,lista);
while(p!=EndL(lista)){
if(pom.sifra>RetrieveL(p,lista).sifra){
tip next=NextL(p,lista);
if(next==EndL(lista) || pom.sifra<RetrieveL(next,lista).sifra) break;
p=next;
}
else break;
}*/
return InsertL(pom,p,lista);
}
void ispis(zivotinja *lista){
tip p = PreviousL(EndL(lista),lista);
if(EndL(lista) == FirstL(lista)) return;
while(1){
cout<<"-------------------------------------"<<endl;
pomocna pom=RetrieveL(p,lista);
cout<<"Sifra: " << pom.sifra << endl;
cout<<"Vrsta: " << pom.vrsta << endl;
cout<<"Naziv: " << pom.naziv << endl;
cout<<"Cijena: " << pom.cijena << endl;
cout<<"Datum: " << pom.datum << endl;
if(p==FirstL(lista)) break;
p = PreviousL(p,lista);
}
}
void ispis2(zivotinja *lista){
int br=0;
tip p=FirstL(lista);
while(p!=EndL(lista)){
pomocna pom=RetrieveL(p,lista);
char dd[3],mm[3],gg[5];
for(int i=0; i<10; i++){
if(i<3) dd[i]=pom.datum[i];
if(i>2 && i<6) mm[i-3]=pom.datum[i];
if(i>5) gg[i-6]=pom.datum[i];
}
gg[5]='/';
int d,m,g;
d = atoi(dd);
m = atoi(mm);
g = atoi(gg);
if(g>2012 || (g==2012 && (m>9|| (m==9 && d>23)))){
cout<<"-------------------------------------"<<endl;
cout<<"Sifra: " << pom.sifra << endl;
cout<<"Vrsta: " << pom.vrsta << endl;
cout<<"Naziv: " << pom.naziv << endl;
cout<<"Cijena: " << pom.cijena << endl;
cout<<"Datum: " << pom.datum << endl;
br++;
}
p=NextL(p,lista);
}
if(br>0) cout<<"\nUkupno zivotinja dostavljeno nakon 23.9.2012 ima: "<<br<<endl;
else cout<<"Nema zivotinja dostavljeno nakon 23.9.2012! \n";
}
bool brisanje(zivotinja *lista){
int n;
do{
cout << "\nZa brisanje po vrstama unesite 1, a za brisanje po nazivu zivotinja unesite 2: ";
cin >> n;
} while (n!=1 && n!=2);
if(n==1){
cout << "Unesite naziv vrste: ";
char vrsta[20];
cin.ignore();
cin.getline(vrsta,20);
tip p = FirstL(lista);
while(p!=EndL(lista)){
if(strcmp(RetrieveL(p,lista).vrsta,vrsta)==0){
tip pom=PreviousL(p,lista);
p=pom;
return DeleteL(pom,lista);
}
p = NextL(p,lista);
}
}
else{
cout << "Unesite naziv zivotinje: ";
char naziv[20];
cin.ignore();
cin.getline(naziv,20);
cout << "asdasdas " << naziv;
tip p = FirstL(lista);
while(p!=EndL(lista)){
if(strcmp(RetrieveL(p,lista).naziv,naziv)==0){
tip pom=PreviousL(p,lista);
p=pom;
return DeleteL(pom,lista);
}
p = NextL(p,lista);
}
}
return false;
}
void Spoji(pomocna *A,int i,int k,int j) {
int I=i, J=k+1, K=0;
pomocna *B = new pomocna [j-i+1];
while (I<=k && J<=j)
if (A[I].cijena>=A[J].cijena)
memcpy (&B[K++],&A[I++],sizeof(pomocna));
else
memcpy (&B[K++],&A[J++],sizeof(pomocna));
if (I>k)
while (J<=j)
memcpy (&B[K++],&A[J++],sizeof(pomocna));
else
while (I<=k)
memcpy (&B[K++],&A[I++],sizeof(pomocna));
for (int I=0;I<=j-i;I++)
memcpy (&A[i+I],&B[I],sizeof(pomocna));
delete []B;
}
void MSort(pomocna *A,int i, int j) {
if (i<j) {
int k=(i+j)/2;
MSort(A,i,k);
MSort(A,k+1,j);
Spoji(A,i,k,j);
}
}
void MSort(pomocna *A,int N) {
MSort(A,0,N-1);
}
zivotinja* sortiranje(zivotinja *lista){
if(EndL(lista)==FirstL(lista)) exit;
int uk=0,i,j;
pomocna polje[1000],tmp;
tip p=FirstL(lista);
while(p!=EndL(lista)){
polje[uk].sifra = RetrieveL(p,lista).sifra;
polje[uk].cijena= RetrieveL(p,lista).cijena;
strcpy(polje[uk].datum,RetrieveL(p,lista).datum);
strcpy(polje[uk].vrsta,RetrieveL(p,lista).vrsta);
strcpy(polje[uk].naziv,RetrieveL(p,lista).naziv);
uk++;
p=NextL(p,lista);
}
MSort(polje,uk);
lista->slijedeci=NULL;
p = FirstL(lista);
for(int j=0;j<uk;j++)
InsertL(polje[j],p,lista);
p = FirstL(lista);
while(p!=EndL(lista)){
cout << "\nSifra: " << RetrieveL(p,lista).sifra
<<"\nCijena:" << RetrieveL(p,lista).cijena
<< "\nDatum: " << RetrieveL(p,lista).datum
<< "\nVrsta: " << RetrieveL(p,lista).vrsta
<< "\nNaziv: " << RetrieveL(p,lista).naziv;
p=NextL(p,lista);
}
return lista;
}
int main(){
zivotinja *lista=InitL(lista);
int n;
while(n!=9){
system("cls");
cout << "\n1. Dodavanje elementa u listu"
<< "\n2. Ispis svih elemenata liste od onog sa najvecom sifrom"
<< "\n3. Ispis zivotinja koje dostavljenje nakon 23.9.2012"
<< "\n4. Brisanje elementa liste"
<< "\n5. Sortiranje elementa liste"
<< "\n9. Izlaz"
<< "\nOdabir: ";
cin>>n;
switch(n){
case 1: if(dodavanje(lista)==true) cout << "\nDodavanje je uspjelo!\n";
else cout << "\nDodavanje nije uspjelo!\n";
break;
case 2: ispis(lista); break;
case 3: ispis2(lista);break;
case 4: if(brisanje(lista)) cout << "\nBrisanje je uspjelo\n";
else cout << "\nBrisanje nije uspjelo\n";
break;
case 5:lista = sortiranje(lista); break;
};
system("pause");
}
cin >> n;
return 0;
}
Revision: 60580
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 11, 2012 22:54 by supavkovii
Initial Code
#include <iostream>
#include <cstdlib>
#include <cstring>
//#include "lista_polje2.h"
#include "lista_pokazivaci.h"
using namespace std;
int sifra=10000;
bool dodavanje(zivotinja *lista){
pomocna pom;
pom.sifra=sifra++;
cout<<"Unesite podatke\n";
cout<<"Sifra: " << pom.sifra << endl;
cout<<"Cijena: ";
cin>>pom.cijena;
cout<<"Unesite datum u obliku dd/mm/gggg : ";
cin.ignore();
cin.getline(pom.datum,15);
cout<<"Vrsta zivotinje: ";
cin.getline(pom.vrsta,20);
cout<<"Naziv zivotinje: ";
cin.getline(pom.naziv,15);
tip p=EndL(lista);
/*if(PreviousL(p,lista))
p=PreviousL(p,lista);
while(p!=EndL(lista)){
if(pom.sifra>RetrieveL(p,lista).sifra){
tip next=NextL(p,lista);
if(next==EndL(lista) || pom.sifra<RetrieveL(next,lista).sifra) break;
p=next;
}
else break;
}*/
return InsertL(pom,p,lista);
}
void ispis(zivotinja *lista){
tip p = PreviousL(EndL(lista),lista);
if(EndL(lista) == FirstL(lista)) return;
while(1){
cout<<"-------------------------------------"<<endl;
pomocna pom=RetrieveL(p,lista);
cout<<"Sifra: " << pom.sifra << endl;
cout<<"Vrsta: " << pom.vrsta << endl;
cout<<"Naziv: " << pom.naziv << endl;
cout<<"Cijena: " << pom.cijena << endl;
cout<<"Datum: " << pom.datum << endl;
if(p==FirstL(lista)) break;
p = PreviousL(p,lista);
}
}
void ispis2(zivotinja *lista){
int br=0;
tip p=FirstL(lista);
while(p!=EndL(lista)){
pomocna pom=RetrieveL(p,lista);
char dd[2],mm[2],gg[4];
for(int i=0; i<10; i++){
if(i<2) dd[i]=pom.datum[i];
if(i>2 && i<5) mm[i-3]=pom.datum[i];
if(i>5) gg[i-6]=pom.datum[i];
}
int d,m,g;
d = atoi(dd);
m = atoi(mm);
g = atoi(gg);
if(g>2012|| (g==2012 && (m>9|| (m==9 && d>23)))){
cout<<"-------------------------------------"<<endl;
cout<<"Sifra: " << pom.sifra << endl;
cout<<"Vrsta: " << pom.vrsta << endl;
cout<<"Naziv: " << pom.naziv << endl;
cout<<"Cijena: " << pom.cijena << endl;
cout<<"Datum: " << pom.datum << endl;
br++;
}
p=NextL(p,lista);
}
if(br>0) cout<<"\nUkupno zivotinja dostavljeno nakon 23.9.2012 ima: "<<br<<endl;
else cout<<"Nema zivotinja dostavljeno nakon 23.9.2012! \n";
}
bool brisanje(zivotinja *lista){
int n;
do{
cout << "\nZa brisanje po vrstama unesite 1, a za brisanje po nazivu zivotinja unesite 2: ";
cin >> n;
} while (n!=1 && n!=2);
if(n==1){
cout << "Unesite naziv vrste: ";
char vrsta[20];
cin.ignore();
cin.getline(vrsta,20);
tip p = FirstL(lista);
while(p!=EndL(lista)){
if(strcmp(RetrieveL(p,lista).vrsta,vrsta)==0){
tip pom=PreviousL(p,lista);
p=pom;
return DeleteL(pom,lista);
}
p = NextL(p,lista);
}
}
else{
cout << "Unesite naziv zivotinje: ";
char naziv[20];
cin.ignore();
cin.getline(naziv,20);
cout << "asdasdas " << naziv;
tip p = FirstL(lista);
while(p!=EndL(lista)){
if(strcmp(RetrieveL(p,lista).naziv,naziv)==0){
tip pom=PreviousL(p,lista);
p=pom;
return DeleteL(pom,lista);
}
p = NextL(p,lista);
}
}
return false;
}
void Spoji(pomocna *A,int i,int k,int j) {
int I=i, J=k+1, K=0;
pomocna *B = new pomocna [j-i+1];
while (I<=k && J<=j)
if (A[I].cijena>=A[J].cijena)
memcpy (&B[K++],&A[I++],sizeof(pomocna));
else
memcpy (&B[K++],&A[J++],sizeof(pomocna));
if (I>k)
while (J<=j)
memcpy (&B[K++],&A[J++],sizeof(pomocna));
else
while (I<=k)
memcpy (&B[K++],&A[I++],sizeof(pomocna));
for (int I=0;I<=j-i;I++)
memcpy (&A[i+I],&B[I],sizeof(pomocna));
delete []B;
}
void MSort(pomocna *A,int i, int j) {
if (i<j) {
int k=(i+j)/2;
MSort(A,i,k);
MSort(A,k+1,j);
Spoji(A,i,k,j);
}
}
void MSort(pomocna *A,int N) {
MSort(A,0,N-1);
}
zivotinja* sortiranje(zivotinja *lista){
if(EndL(lista)==FirstL(lista)) exit;
int uk=0,i,j;
pomocna polje[1000],tmp;
tip p=FirstL(lista);
while(p!=EndL(lista)){
polje[uk].sifra = RetrieveL(p,lista).sifra;
polje[uk].cijena= RetrieveL(p,lista).cijena;
strcpy(polje[uk].datum,RetrieveL(p,lista).datum);
strcpy(polje[uk].vrsta,RetrieveL(p,lista).vrsta);
strcpy(polje[uk].naziv,RetrieveL(p,lista).naziv);
uk++;
p=NextL(p,lista);
}
MSort(polje,uk);
lista->slijedeci=NULL;
p = FirstL(lista);
for(int j=0;j<uk;j++)
InsertL(polje[j],p,lista);
p = FirstL(lista);
while(p!=EndL(lista)){
cout << "\nSifra: " << RetrieveL(p,lista).sifra
<<"\nCijena:" << RetrieveL(p,lista).cijena
<< "\nDatum: " << RetrieveL(p,lista).datum
<< "\nVrsta: " << RetrieveL(p,lista).vrsta
<< "\nNaziv: " << RetrieveL(p,lista).naziv;
p=NextL(p,lista);
}
return lista;
}
int main(){
zivotinja *lista=InitL(lista);
int n;
while(n!=9){
system("cls");
cout << "\n1. Dodavanje elementa u listu"
<< "\n2. Ispis svih elemenata liste od onog sa najvecom sifrom"
<< "\n3. Ispis zivotinja koje dostavljenje nakon 23.9.2012"
<< "\n4. Brisanje elementa liste"
<< "\n5. Sortiranje elementa liste"
<< "\n9. Izlaz"
<< "\nOdabir: ";
cin>>n;
switch(n){
case 1: if(dodavanje(lista)==true) cout << "\nDodavanje je uspjelo!\n";
else cout << "\nDodavanje nije uspjelo!\n";
break;
case 2: ispis(lista); break;
case 3: ispis2(lista);break;
case 4: if(brisanje(lista)) cout << "\nBrisanje je uspjelo\n";
else cout << "\nBrisanje nije uspjelo\n";
break;
case 5:lista = sortiranje(lista); break;
};
system("pause");
}
cin >> n;
return 0;
}
Initial URL
Initial Description
Glavni program s evidencijom kucnih ljubimaca
Initial Title
glavni program.cpp
Initial Tags
Initial Language
C++