Return to Snippet

Revision: 60596
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
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++