Revision: 60603
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 12, 2012 02:11 by nzvorc
Initial Code
#include<iostream>
#include<cstring>
using namespace std;
struct lista{
int sifra;
char vrsta[20], naziv[30];
int dan, mj, god;
float cijena;
};
lista L[100];
int sif=1;
//1. Dodavanje zapisa u listu
int InsertL(int c, lista L[]){
L[c].sifra=sif++;
if(c!=0) cin.ignore();
cout<<"Unesi vrstu zivotinje: ";
cin.getline(L[c].vrsta, 20);
cout<<"Unesi naziv zivotinje: ";
cin.getline(L[c].naziv, 30);
cout<<"Unesi cijenu zivotinje: ";
cin>>L[c].cijena;
cout<<"Unesi datum dostave:"<<endl;
cout<<"Dan: "; cin>>L[c].dan;
cout<<"Mjesec: "; cin>>L[c].mj;
cout<<"Godina: "; cin>>L[c].god;
if(L[c].dan>31 || L[c].dan<1 || L[c].mj<1 || L[c].mj>12 || L[c].god<1993) return 0;
return 1;
}
//2. Ispis zapisa liste
void IspisL(int c, lista L[]){
for(int x=c-1; x>=0; x--){
cout<<"Sifra: ";
if(L[x].sifra<10) cout<<"00";
else if(L[x].sifra<100)cout<<"0";
cout<<L[x].sifra<<endl;
cout<<"Vrsta: "<<L[x].vrsta<<endl;
cout<<"Naziv: "<<L[x].naziv<<endl;
cout<<"Cijena: "<<L[x].cijena<<endl;
cout<<"Datum: "<<L[x].dan<<"."<<L[x].mj<<"."<<L[x].god<<endl;
cout<<"---------------------" << endl;
}
}
//3. Pretrazivaje liste
int LocateL(int c, lista L[]){
int bz=0;
for(int x=0; x<c; x++){
if(L[x].god<2012) continue;
if(L[x].god==2012 && L[x].mj<9) continue;
if(L[x].mj==9 && L[x].god==2012 && L[x].dan<=23) continue;
cout<<"Sifra: ";
if(L[x].sifra<10) cout<<"00";
else if(L[x].sifra<100)cout<<"0";
cout<<L[x].sifra<<endl;
cout<<"Vrsta: "<<L[x].vrsta<<endl;
cout<<"Naziv: "<<L[x].naziv<<endl;
cout<<"Cijena: "<<L[x].cijena<<endl;
cout<<"Datum dostave: "<<L[x].dan<<"."<<L[x].mj<<"."<<L[x].god<<endl;
cout<<"-----------------------"<<endl;
bz++;
}
return bz;
}
//4. Brisanje prema nazivu
int DeleteL(int c, char naziv[], lista L[]){
int x;
for(x=0; x<c; x++){
if(!strcmp(naziv, L[x].naziv)) break;
}
if(x==c) return 0;
for(int i=x; i<c; i++){
L[i].sifra=L[i+1].sifra;
strcpy(L[i].vrsta,L[i+1].vrsta);
strcpy(L[i].naziv,L[i+1].naziv);
L[i].cijena=L[i+1].cijena;
L[i].dan=L[i+1].dan;
L[i].mj=L[i+1].mj;
L[i].god=L[i+1].god;
}
return 1;
}
//5. Brisanje prema vrsti
int DeleteVrstaL(int c, char vrsta[], lista L[]){
int x;
for(x=0; x<c; x++){
if(!strcmp(vrsta, L[x].vrsta)) break;
}
if(x==c) return 0;
for(int i=x; i<c; i++){
L[i].sifra=L[i+1].sifra;
strcpy(L[i].vrsta,L[i+1].vrsta);
strcpy(L[i].naziv,L[i+1].naziv);
L[i].cijena=L[i+1].cijena;
L[i].dan=L[i+1].dan;
L[i].mj=L[i+1].mj;
L[i].god=L[i+1].god;
}
return 1;
}
//6. Sortiranje merge sort
void Spajanje(lista *L, int i, int k, int j){
int I=i, J=k+1, K=0;
lista *A=new lista [j-i+1];
while(I<=k && J<=j){
if(L[I].cijena<=L[J].cijena){
A[K++]=L[I++];
}
else {
A[K++]=L[J++];
}
}//while
if(I>k) while(J<=j) {
A[K++]=L[J++];
}//while
else while(I<=k) {
A[K++]=L[I++];
}//while
for(int I=0; I<=j-i; I++){
L[i+I]=A[I];
}
}//spajanje
void MSort(lista *L, int i, int j){
if(i<j){
int k=(i+j)/2;
MSort(L,i,k);
MSort(L,k+1,j);
Spajanje(L,i,k,j);
}
}
void SortL(int c, lista *L){
MSort(L,0,c-1);
cout<<"Lista je uspjesno sortirana!!!"<<endl;
}
Initial URL
Initial Description
Ovo je datoteka zaglavlja lista_polje.h u kojoj se nalazi implementacija liste pomoću polja. Riješenje je realizirano pomoću polja.
Initial Title
Zadatak1_lista_polje.h
Initial Tags
sort
Initial Language
C++