Revision: 60596
Updated Code
at November 15, 2012 05:46 by dmacan23
Updated Code
/*
* 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_ */
Revision: 60595
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 12, 2012 02:03 by dmacan23
Initial Code
/*
* 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;
//Prvi element:
//-------------
tip FirstL(tlista *L){
return 0;
}
//Zadnji element:
//---------------
tip EndL(tlista *L){
return L->kursor;
}
//Prethodni
//---------
tip PreviousL(tip p, tlista *L){
if(p!=FirstL(L))
return p-1;
else
return -1;
}
//Sljedbenik elementa p
//---------------------
tip NextL(tip p, tlista *L){
if(p!=EndL(L))
return p+1;
else
return -1;
}
//Inicijalizacija liste:
//----------------------
tlista *InitL(tlista *L){
L = new tlista;
L->kursor = 0;
return L;
}
//Lociranje elementa liste:
//-------------------------
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);
}
//Dodavanje novog elementa u listu:
//---------------------------------
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;
}
//Vadjenje elementa iz liste
//--------------------------
tziv RetrieveL(tip p, tlista *L){
return L->ziv[p];
}
//Brisanje elementa s pozicijom p iz liste
//----------------------------------------
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;
}
//Brisanje svih elemenata iz liste
//--------------------------------
tip DeleteAllL(tlista *L){
L->kursor = 0;
return 0;
}
//Merge sort
//----------
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);
}
//Ispis za MSort
//--------------
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_ */
Initial URL
Initial Description
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
Initial Title
Strukture_Podataka_Macan_Z1-listapolje.cpp
Initial Tags
Initial Language
C++