/ Published in: C++
1. Zadatak kolegija "Strukture podataka" na Fakultetu Organizacije i Informatike u Varaždinu. Trebalo je napraviti program koji služi za evidenciju kućnih ljubimaca u trgovini za kućne ljubimce, i to pomoću ATP liste implementirane poljem i pokazivaÄima. Ovo je samo zaglavlje koje treba "glavna.cpp" kako bi radilo
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
/* * lista_polje.h * * Created on: Nov 8, 2012 * Author: David Ante Macan */ #ifndef LISTA_POLJE_H_ #define LISTA_POLJE_H_ #include <iostream> using namespace std; int provjera = 0; struct tziv{ int sifra; char vrsta[20]; char naziv[20]; float cijena; int datum[3]; }; struct tlista{ tziv ziv[1000]; int kursor; }; typedef int tip; tip FirstL(tlista *L){ return 0; } tip EndL(tlista *L){ return L->kursor; } tip PreviousL(tip p, tlista *L){ if(p!=FirstL(L)) return p-1; else return -1; } tip NextL(tip p, tlista *L){ if(p!=EndL(L)) return p+1; else return -1; } tlista *InitL(tlista *L){ L = new tlista; L->kursor = 0; return L; } tip LocateL(tziv x, tlista *L){ int K; for(K=0; K<EndL(L); K++ ){ if(x.sifra!=0){ if(x.sifra == L->ziv[K].sifra) return K; } } return EndL(L); } tip InsertL(tziv x, tip p, tlista *L){ int K; for(K=EndL(L); K>p; K--) L->ziv[K] = L->ziv[K-1]; L->ziv[p]=x; L->kursor=L->kursor+1; if(L->ziv[p].sifra == x.sifra) return 1; else return 0; } tziv RetrieveL(tip p, tlista *L){ return L->ziv[p]; } tip DeleteL(tip p, tlista *L){ for(int i=p; i<EndL(L);i++){ L->ziv[i]=L->ziv[i+1]; } L->kursor = L->kursor - 1; return 1; } tip DeleteAllL(tlista *L){ L->kursor = 0; return 0; } void Merge(tlista *L, int i, int k, int j){ int pocetak = i, iduci = k+1, brojilo=0, velicina = j-i+1; tziv *pom = new tziv [velicina]; while(pocetak<=k && iduci<=j){ if((L->ziv[pocetak].cijena) > (L->ziv[iduci].cijena)) pom[brojilo++]=L->ziv[pocetak++]; else if(L->ziv[pocetak].cijena < L->ziv[iduci].cijena) pom[brojilo++]=L->ziv[iduci++]; if(L->ziv[pocetak].cijena == L->ziv[iduci].cijena){ if(strcmp(L->ziv[pocetak].naziv, L->ziv[iduci].naziv)==1) pom[brojilo++] = L->ziv[pocetak++]; else pom[brojilo++] = L->ziv[iduci++]; } } while(pocetak<=k) pom[brojilo++] = L->ziv[pocetak++]; while(iduci<=j) pom[brojilo++] = L->ziv[iduci++]; for (int I=0; I<velicina; I++) L->ziv[i+I] = pom[I]; delete[] pom; } void rMSort(tlista *L, tip pocetak, tip kraj){ if(pocetak<kraj){ int sredina=(pocetak+kraj)/2; rMSort(L,pocetak,sredina); rMSort(L,sredina+1,kraj); Merge(L,pocetak,sredina,kraj); } //ispispolja(L); } void MSort(tlista *L, int i, int j){ if(FirstL(L)==EndL(L)){ cout<<"Lista je prazna ili ima samo 1 element"<<endl; return; } rMSort(L,0,EndL(L)-1); tziv tekuci; for(int i=0; i<=EndL(L)-1; i++){ tekuci = L->ziv[i]; cout<<"\n\n" <<"Sifra zivotinje: "<<tekuci.sifra<<endl <<"Vrsta zivotinje: "<<tekuci.vrsta<<endl <<"Naziv zivotinje: "<<tekuci.naziv<<endl <<"Cijena zivotinje: "<<tekuci.cijena<<endl <<"Datum dostave: "<<tekuci.datum[2]<<"."<<tekuci.datum[1]<<"."<<tekuci.datum[0]<<"."<<endl <<"-------------------------------------"<<endl<<endl; } } #endif /* LISTA_POLJE_H_ */