Return to Snippet

Revision: 60524
at November 12, 2012 03:20 by Bozidar


Updated Code
#include <iostream>
using namespace std;
struct lista{
	int sifra[10000], dan[10000], mjesec[10000], godina[10000];
	float cijena[10000];
	char vrsta[10000][20], naziv[10000][20];
	int kursor;
};

typedef struct lista list;

void InitL(list *l){  
     l->kursor = 0;
}

int FirstL(list *list){
    return 0;
}

int EndL(list *l){
    return l->kursor;
}

int NextL(int p, list *l)
{
	if(p==--l->kursor)
		return l->kursor;
	if(p>=l->kursor)
		cout<<"Funkcija je nedefinirana!\n";
	else return(p+1);
}

int PreviousL(int p, list *l){
	if(p==FirstL(l)){
		cout<<"Funkcija je nedefinirana!\n";
       return -1;
    }    
	if(p==EndL(l))
			return --l->kursor;
    else
        return(p--);
}

int LocateL(int x, list *l){
	for(int i=0; i<l->kursor;i++){
		if(x==l->sifra[i])
			return i;
	}
	return EndL(l);
}
int LocateL_naziv_vrsta(char unos[20], list *l, bool naziv_ili_vrsta){
	int broj = -1;
	if(naziv_ili_vrsta==true){
		for(int i=0; i<l->kursor;i++){
			if(strcmp(l->naziv[i],unos)==0)
				broj = i;
		}
	}
	else{
		for(int i=0; i<l->kursor;i++){
			if(strcmp(l->vrsta[i],unos)==0)
				broj = i;
		}
	}
	if(broj != -1)
			return broj;
	else return EndL(l);
}

void InsertL(int dan, int mjesec, int godina, int sifra, char vrsta[20],char naziv[20],float cijena, int p, list *l){      
	if(p<10000){
		for(int i=l->kursor;i>p;i--){
			l->sifra[i--] = l->sifra[i];
			l->vrsta[i--][20] = l->naziv[i][20];
			l->naziv[i--][20] = l->naziv[i][20];
			l->cijena[i--]=l->cijena[i];
			l->dan[i--] = l->dan[i];
			l->mjesec[i--] = l->mjesec[i];
			l->godina[i--] = l->godina[i];
		}
		l->sifra[p] = sifra;
		strcpy(l->vrsta[p],vrsta);
		strcpy(l->naziv[p],naziv);
		l->cijena[p]=cijena;
		l->dan[p] = dan;
		l->mjesec[p] = mjesec;
		l->godina[p] = godina;
		l->kursor++;
	}
	else cout<<"Lista je vec napunjena!\n";
}

int DeleteL(int p, list *l){
	if ((p < l->kursor) && (p >= 0)) {
		for (int i=p; i<l->kursor; i++){
			l->sifra[i] = l->sifra[i+1];
			strcpy(l->vrsta[i],l->vrsta[i+1]);
			strcpy(l->naziv[i],l->naziv[i+1]);
			l->cijena[i]=l->cijena[i+1];
			l->dan[i] = l->dan[i+1];
			l->mjesec[i] = l->mjesec[i+1];
			l->godina[i] = l->godina[i+1];
		}
		l->kursor--;
		return l->kursor;
	}
	else {
		cout<<"Element liste ne postoji!";
		return 0;
	}
}

void RetriveL(int p, list *l){
	if(p>=l->kursor){
		cout<<"Element liste ne postoji!";
	}
	else {
		cout<<"Sifra: "<<l->sifra[p]<<endl;
		cout<<"Vrsta zivotinje: "<<l->vrsta[p]<<endl;
		cout<<"Naziv zivotinje: "<<l->naziv[p]<<endl;
		cout<<"Cijena: "<<l->cijena[p]<<endl;
		cout<<"Datum dostave: "<<l->dan[p]<<"."<<l->mjesec[p]<<"."<<l->godina[p]<<"."<<endl;
		cout<<endl;
	}
}
void RetriveL_Naziv(int p, lista *l, bool naziv_vrsta){
	if(p>=l->kursor){
		cout<<"Element liste ne postoji!";
	}
	else{
		if(naziv_vrsta==true)
			cout<<l->sifra[p]<<"\t"<<l->naziv[p]<<endl;
		else cout<<l->sifra[p]<<"\t"<<l->vrsta[p]<<endl;
	}
}

void DeleteAll(list *l){
     l->kursor = 0;     
}
int br_unesenih_el(list *l){
	return l->kursor;
}
void od_zadnje_sifre(list *l, int *polje, int br_unesenih_el){
	for(int i=0; i<br_unesenih_el;i++)
		polje[i] = l->sifra[i];
	bool zamjena = true;
	for(int i=br_unesenih_el-1; i>0 && zamjena; i--){
		zamjena = false;
		for(int j = 0; j<i; j++)
			if(polje[j] > polje[j+1]){
				int pom = polje[j];
				polje[j] = polje[j+1];
				polje[j+1] = pom;
				zamjena = true;
			}
	}
	return;
}

void RetriveL_datum(list *l){
	int n = 0;
	for(int p = 0; p<(l->kursor); p++){
		if(l->godina[p] > 2012){
			cout<<"Sifra: "<<l->sifra[p]<<endl;
			cout<<"Vrsta zivotinje: "<<l->vrsta[p]<<endl;
			cout<<"Naziv zivotinje: "<<l->naziv[p]<<endl;
			cout<<"Cijena: "<<l->cijena[p]<<endl;
			cout<<"Datum dostave: "<<l->dan[p]<<"."<<l->mjesec[p]<<"."<<l->godina[p]<<"."<<endl;
			cout<<endl;
			n++;
		}
		if(l->godina[p] == 2012){
			if(l->mjesec[p] > 9){
				cout<<"Sifra: "<<l->sifra[p]<<endl;
				cout<<"Vrsta zivotinje: "<<l->vrsta[p]<<endl;
				cout<<"Naziv zivotinje: "<<l->naziv[p]<<endl;
				cout<<"Cijena: "<<l->cijena[p]<<endl;
				cout<<"Datum dostave: "<<l->dan[p]<<"."<<l->mjesec[p]<<"."<<l->godina[p]<<"."<<endl;
				cout<<endl;
				n++;
			}
		}
		if(l->godina[p] == 2012){
			if(l->mjesec[p]==9){
				if(l->dan[p]>23){
					cout<<"Sifra: "<<l->sifra[p]<<endl;
					cout<<"Vrsta zivotinje: "<<l->vrsta[p]<<endl;
					cout<<"Naziv zivotinje: "<<l->naziv[p]<<endl;
					cout<<"Cijena: "<<l->cijena[p]<<endl;
					cout<<"Datum dostave: "<<l->dan[p]<<"."<<l->mjesec[p]<<"."<<l->godina[p]<<"."<<endl;
					cout<<endl;
					n++;
				}
			}
		}
	}
	cout<<"\nUkupan broj zivotinja dostavljenih nakon 23. 9. 2012. je: "<<n<<endl;
}
int brisi_naziv(list *l, bool naziv_ili_vrsta, int izlaz){
	char naziv[20];
	naziv_ili_vrsta = true;
	do{
				cout<<"Naziv: "; unos(naziv);
				if(LocateL_naziv_vrsta(naziv, l,naziv_ili_vrsta)==EndL(l)){
					cout<<"Zivotinja sa tim nazivom ne postoji!\n";
					cout<<"1. Ponovna pretraga\n";
					cout<<"2. Izlaz\n";
					cout<<"Vas odabir: "; cin>>izlaz;}
			}while(LocateL_naziv_vrsta(naziv, l, naziv_ili_vrsta)==EndL(l) && izlaz!=2);
			if(LocateL_naziv_vrsta(naziv, l, naziv_ili_vrsta)!=EndL(l)){               //ako u do-while stsnem 2 za izlaz a ne postoji ziv izbacit ce error..i zato sam stavio jos taj if
				DeleteL(LocateL_naziv_vrsta(naziv, l, naziv_ili_vrsta), l); //LocateL(1. lociram poziciju trazenog elem, 2. i jos samo proslijedim glavu liste)
				cout<<"Obrisano!\n";
				return 1;
			}
			else return 0;

}
int brisi_vrstu(list *l, bool naziv_ili_vrsta, int izlaz){
	char vrsta[20];
	naziv_ili_vrsta = false;
	do{
				cout<<"Vrsta: "; unos(vrsta);
				if(LocateL_naziv_vrsta(vrsta, l, naziv_ili_vrsta)==EndL(l)){
					cout<<"Zivotinja s tom vrstom ne postoji!\n";
					cout<<"1. Ponovna pretraga\n";
					cout<<"2. Izlaz\n";
					cout<<"Vas odabir: "; cin>>izlaz;
				}
	}while(LocateL_naziv_vrsta(vrsta, l, naziv_ili_vrsta)==EndL(l) && izlaz!=2);
	if(LocateL_naziv_vrsta(vrsta, l, naziv_ili_vrsta)!=EndL(l)){               //ako u do-while stsnem 2 za izlaz a ne postoji trazena zivotinja izbacit ce error..i zato sam stavio jos taj if
		int broj = br_unesenih_el(l);
		do{
			DeleteL(LocateL_naziv_vrsta(vrsta, l, naziv_ili_vrsta), l); //LocateL(1. lociram poziciju trazenog elem, 2. i jos samo proslijedim glavu liste)
		}while(LocateL_naziv_vrsta(vrsta, l, naziv_ili_vrsta)!=EndL(l));          //do-while koristim zato sto zelim proc kroz listu vise puta(ako ima vise istih vrsta) i obrisat sve elemente s tom vrstom
		cout<<"Obrisano!\n";
		return 1;
	}
	else return 0;
}
 
void cijena_u_polje(list *l, float *polje_cijena, float *polje_sifra,char nazivi[1000][20], int br_unesenih_el){
	for(int i=0; i<br_unesenih_el;i++){
		polje_cijena[i] = l->cijena[i];
		polje_sifra[i] = l->sifra[i];
	}

	for(int i=0; i<br_unesenih_el;i++){
			for(int j=0; j<20; j++){
				nazivi[i][j] = l->naziv[i][j];
			}
	
	}

	//sort
	char temp[20];
	float pomocna = 0;
	float pomocna2 = 0;
	char hold[20];
	int pass;
	int i = 0;
	for ( pass = 1; pass < br_unesenih_el; pass++ ){
			for ( i = 0; i < br_unesenih_el - 1; i++ ){
				if (strncmp(nazivi[i],nazivi[i+1],br_unesenih_el) > 0){
					strcpy(hold, nazivi[i]);
					strcpy(nazivi[i], nazivi[i+1]);
					strcpy(nazivi[i+1], hold);

					pomocna = polje_cijena[i];
					polje_cijena[i]=polje_cijena[i+1];
					 polje_cijena[i+1]=pomocna;

					pomocna2 = polje_sifra[i];
					polje_sifra[i]=polje_sifra[i+1];
					polje_sifra[i+1]=pomocna2;
				}
			}
		}


}
int LocateL_cijena(float x, int y, list *l){
	for(int i=0; i<l->kursor;i++){
		if(x==l->cijena[i] && y == l->sifra[i])
			return i;
	}
	return EndL(l);
}

Revision: 60523
at November 12, 2012 03:19 by Bozidar


Updated Code
#include <iostream>
struct lista{
	int sifra, dan, mjesec, godina;
	float cijena;
	char vrsta[20], naziv[20];
	lista *sljedeci;
};
typedef struct lista *element;
typedef struct lista list;


void InitL(list *glava){
	glava->sljedeci = NULL;
}

element FirstL(list *glava){
      list *sljedeci;
      sljedeci = glava->sljedeci;
      return sljedeci;
}

element EndL(list *glava){
        list *zadnji;
        zadnji = glava;
        while(zadnji->sljedeci)
                  zadnji = zadnji->sljedeci;
        return zadnji;
}

element NextL(element p, list *glava){
        if (p->sljedeci == NULL) {
	    	printf("Element ne postoji!");
		    return 0;
        }
        else {
		     list *sljedbenik;
		     sljedbenik=p->sljedeci;
		     return sljedbenik;
        }
}

element PreviousL(element p, list *glava){
	list *prethodni;
	prethodni=glava;
	while ((prethodni->sljedeci != NULL) && (prethodni->sljedeci != p))
		prethodni=prethodni->sljedeci;
	if (prethodni->sljedeci != NULL)
		return prethodni;
	else {
		printf("Element ne postoji!");
		return 0;
	}
}

element LocateL(int x, list *glava){           
	list *tekuci = glava;
	while (tekuci != NULL && tekuci->sifra != x)
		tekuci=tekuci->sljedeci;
	if(tekuci==NULL)
		return NULL;
	else 
		return tekuci;
}
element LocateL_naziv_vrsta(char unos[20], list *glava, bool naziv_ili_vrsta){             //trazim prema nazivu i vrti kako bi mogao pronedeno obrisat
	list *tekuci = glava;
	if(naziv_ili_vrsta==true){
		while (tekuci != NULL && strcmp(tekuci->naziv,unos))
			tekuci=tekuci->sljedeci;
	}
	else{
		while (tekuci != NULL && strcmp(tekuci->vrsta,unos))
			tekuci=tekuci->sljedeci;
	}
	if(tekuci==NULL){
		return NULL;}
	else 
		return tekuci;
}

void InsertL(int dan, int mjesec, int godina, int sifra, char vrsta[20],char naziv[20],float cijena, element pozicija, list *glava){
	list *prethodni = glava;

	while(prethodni->sljedeci!=NULL){
		if(pozicija==prethodni->sljedeci)
			break;	
		prethodni = prethodni->sljedeci;
	}
	if(prethodni->sljedeci==NULL){
		list *sljedeci = prethodni->sljedeci;
		list *novi = new list;
		novi->sljedeci = sljedeci;
		prethodni->sljedeci = novi;
		novi->sifra = sifra;
		strcpy(novi->vrsta,vrsta);
		strcpy(novi->naziv,naziv);
		novi->cijena = cijena;
		novi->dan = dan;
		novi->mjesec = mjesec;
		novi->godina = godina;
	}
	else{
		list *sljedeci = prethodni->sljedeci;
		list *novi = new list;
		novi->sljedeci = sljedeci;
		prethodni->sljedeci = novi;
		novi->sifra = sifra;
		strcpy(novi->vrsta,vrsta);
		strcpy(novi->naziv,naziv);
		novi->cijena = cijena;
		novi->dan = dan;
		novi->mjesec = mjesec;
		novi->godina = godina;
	}
}

void DeleteL(element p, list *glava){
     element l;
     p=PreviousL(p,glava);
     if (p->sljedeci != NULL) {
                l=p->sljedeci;
                p->sljedeci=p->sljedeci->sljedeci;
                delete l;
        }     
}

void RetriveL(element p, list *glava){
	list *tekuci = glava;
    while(tekuci->sljedeci!=NULL){
		tekuci = tekuci->sljedeci;
		if(tekuci == p)
			break;
    }
	cout<<"Sifra: "<<tekuci->sifra<<endl;
	cout<<"Vrsta zivotinje: "<<tekuci->vrsta<<endl;
	cout<<"Naziv zivotinje: "<<tekuci->naziv<<endl;
	cout<<"Cijena: "<<tekuci->cijena<<endl;
	cout<<"Datum dostave: "<<tekuci->dan<<"."<<tekuci->mjesec<<"."<<tekuci->godina<<"."<<endl;
	cout<<endl;

}
void RetriveL_Naziv(element p, list *glava, bool naziv_vrsta){
	list *tekuci = glava;
    while(tekuci->sljedeci!=NULL){
		tekuci = tekuci->sljedeci;
		if(tekuci == p)
			break;
	}	
	if(naziv_vrsta==true)
		cout<<tekuci->sifra<<"\t"<<tekuci->naziv<<endl;
	else cout<<tekuci->sifra<<"\t"<<tekuci->vrsta<<endl;
}

void DeleteAll(list *glava){
     element l;
     while(glava->sljedeci){
               l = glava->sljedeci;
               glava->sljedeci = glava->sljedeci->sljedeci;
               delete l;
     }                           
}

int br_unesenih_el(list *glava){
	list *tekuci = glava;
	int n = 0;
	while(tekuci->sljedeci!=NULL){
		n++;
		tekuci = tekuci->sljedeci;
	}
	return n;
}

void od_zadnje_sifre(list *glava, int *polje, int br_unesenih_el){
	list *tekuci = glava->sljedeci;
	for(int i=0;i < br_unesenih_el; i++)
		polje[i] = 0;
	int i = 0;
	while(tekuci!=NULL){
		if(tekuci->sifra > 0){
			polje[i] = tekuci->sifra;
			i++;
		}
		tekuci = tekuci ->sljedeci;
	}
	bool zamjena = true;
	for(int i = br_unesenih_el-1; i>0 && zamjena; i--){
		zamjena = false;
		for(int j=0; j<i; j++)
			if(polje[j] > polje[j+1]){
				int pom = polje[j];
				polje[j]=polje[j+1];
				polje[j+1]=pom;
				zamjena = true;
			}
	}
	return;
}
void RetriveL_datum(list *glava){
	list *tekuci = glava;
	int n = 0;
	while(tekuci!=NULL){
		if(tekuci->godina > 2012){
			cout<<"Sifra: "<<tekuci->sifra<<endl;
			cout<<"Vrsta zivotinje: "<<tekuci->vrsta<<endl;
			cout<<"Naziv zivotinje: "<<tekuci->naziv<<endl;
			cout<<"Cijena: "<<tekuci->cijena<<endl;
			cout<<"Datum dostave: "<<tekuci->dan<<"."<<tekuci->mjesec<<"."<<tekuci->godina<<"."<<endl;
			cout<<endl;
			n++;
		}
		if(tekuci->godina == 2012){
			if(tekuci->mjesec > 9){
				cout<<"Sifra: "<<tekuci->sifra<<endl;
				cout<<"Vrsta zivotinje: "<<tekuci->vrsta<<endl;
				cout<<"Naziv zivotinje: "<<tekuci->naziv<<endl;
				cout<<"Cijena: "<<tekuci->cijena<<endl;
				cout<<"Datum dostave: "<<tekuci->dan<<"."<<tekuci->mjesec<<"."<<tekuci->godina<<"."<<endl;
				cout<<endl;
				n++;
			}
		}

		if(tekuci->godina == 2012){
			if(tekuci->mjesec==9){
				if(tekuci->dan>23){
					cout<<"Sifra: "<<tekuci->sifra<<endl;
					cout<<"Vrsta zivotinje: "<<tekuci->vrsta<<endl;
					cout<<"Naziv zivotinje: "<<tekuci->naziv<<endl;
					cout<<"Cijena: "<<tekuci->cijena<<endl;
					cout<<"Datum dostave: "<<tekuci->dan<<"."<<tekuci->mjesec<<"."<<tekuci->godina<<"."<<endl;
					cout<<endl;
					n++;
				}}}
		tekuci = tekuci->sljedeci;
	}
	cout<<"\nUkupan broj zivotinja dostavljenih nakon 23. 9. 2012. je: "<<n<<endl;
}
int brisi_naziv(list *glava, bool naziv_ili_vrsta, int izlaz){
	char naziv[20];
	naziv_ili_vrsta = true;
	do{
				cout<<"Naziv: "; unos(naziv);
				if(LocateL_naziv_vrsta(naziv, glava,naziv_ili_vrsta)==0){
					cout<<"Zivotinja sa tim nazivom ne postoji!\n";
					cout<<"1. Ponovna pretraga\n";
					cout<<"2. Izlaz\n";
					cout<<"Vas odabir: "; cin>>izlaz;}
			}while(LocateL_naziv_vrsta(naziv, glava, naziv_ili_vrsta)==0 && izlaz!=2);
			if(LocateL_naziv_vrsta(naziv, glava, naziv_ili_vrsta)!=0){               //ako u do-while stsnem 2 za izlaz a ne postoji ziv izbacit ce error..i zato sam stavio jos taj if
				DeleteL(LocateL_naziv_vrsta(naziv, glava, naziv_ili_vrsta), glava); //LocateL(1. lociram poziciju trazenog elem, 2. i jos samo proslijedim glavu liste)
				cout<<"Obrisano!\n";
				return 1;
			}
			else return 0;

}
int brisi_vrstu(list *glava, bool naziv_ili_vrsta, int izlaz){
	char vrsta[20];
	naziv_ili_vrsta = false;
	do{
				cout<<"Vrsta: "; unos(vrsta);
				if(LocateL_naziv_vrsta(vrsta, glava, naziv_ili_vrsta)==0){
					cout<<"Zivotinja s tom vrstom ne postoji!\n";
					cout<<"1. Ponovna pretraga\n";
					cout<<"2. Izlaz\n";
					cout<<"Vas odabir: "; cin>>izlaz;
				}
	}while(LocateL_naziv_vrsta(vrsta, glava, naziv_ili_vrsta)==0 && izlaz!=2);
	if(LocateL_naziv_vrsta(vrsta, glava, naziv_ili_vrsta)!=0){               //ako u do-while stsnem 2 za izlaz a ne postoji trazena zivotinja izbacit ce error..i zato sam stavio jos taj if
		int broj = br_unesenih_el(glava);
		do{
			DeleteL(LocateL_naziv_vrsta(vrsta, glava, naziv_ili_vrsta), glava); //LocateL(1. lociram poziciju trazenog elem, 2. i jos samo proslijedim glavu liste)
		}while(LocateL_naziv_vrsta(vrsta, glava, naziv_ili_vrsta)!=0);          //do-while koristim zato sto zelim proc kroz listu vise puta(ako ima vise istih vrsta) i obrisat sve elemente s tom vrstom
		cout<<"Obrisano!\n";
		return 1;
	}
	else return 0;
}

void cijena_u_polje(list *glava, float *polje_cijena, float *polje_sifra,char nazivi[1000][20], int br_unesenih_el){
	list *tekuci = glava->sljedeci;
	list *tekuci2 = glava->sljedeci;

	for(int i = 0; i<br_unesenih_el; i++){
		polje_cijena[i] = 0;
		polje_sifra[i] = 0;
	}
	int i = 0;
	while(tekuci!=NULL){
		if(tekuci->cijena > 0){
			polje_cijena[i] = tekuci->cijena;
			polje_sifra[i] = tekuci->sifra;
			i++;
		}
		tekuci = tekuci ->sljedeci;
	}

	for(int i=0; i<br_unesenih_el;i++){
			for(int j=0; j<(strlen(tekuci2->naziv)); j++){
				nazivi[i][j] = tekuci2->naziv[j];
			}
			tekuci2 = tekuci2->sljedeci;
	}
	//sort
	char temp[20];
	float pomocna = 0;
	float pomocna2 = 0;
	char hold[20];
	int pass;
	for ( pass = 1; pass < br_unesenih_el; pass++ ){
			for ( i = 0; i < br_unesenih_el - 1; i++ ){
				if (strncmp(nazivi[i],nazivi[i+1],br_unesenih_el) > 0){
					strcpy(hold, nazivi[i]);
					strcpy(nazivi[i], nazivi[i+1]);
					strcpy(nazivi[i+1], hold);

					pomocna = polje_cijena[i];
					polje_cijena[i]=polje_cijena[i+1];
					 polje_cijena[i+1]=pomocna;

					pomocna2 = polje_sifra[i];
					polje_sifra[i]=polje_sifra[i+1];
					polje_sifra[i+1]=pomocna2;
				}
			}
		}
}

element LocateL_cijena(float x, float y,  list *glava){    
	list *tekuci = glava;


	while (tekuci != NULL){
		if(tekuci->cijena == x && tekuci->sifra ==y)
			return tekuci;
		tekuci=tekuci->sljedeci;}

	if(tekuci==NULL)
		return NULL;
	else 
		return tekuci;
}

Revision: 60522
at November 11, 2012 03:31 by Bozidar


Initial Code
#include <iostream>
using namespace std;
struct lista{
	int sifra[10000], dan[10000], mjesec[10000], godina[10000];
	float cijena[10000];
	char vrsta[10000][20], naziv[10000][20];
	int kursor;
};

typedef struct lista list;

void InitL(list *l){  
     l->kursor = 0;
}

int FirstL(list *list){
    return 0;
}

int EndL(list *l){
    return l->kursor;
}

int NextL(int p, list *l)
{
	if(p==--l->kursor)
		return l->kursor;
	if(p>=l->kursor)
		cout<<"Funkcija je nedefinirana!\n";
	else return(p+1);
}

int PreviousL(int p, list *l){
	if(p==FirstL(l)){
		cout<<"Funkcija je nedefinirana!\n";
       return -1;
    }    
	if(p==EndL(l))
			return --l->kursor;
    else
        return(p--);
}

int LocateL(int x, list *l){
	for(int i=0; i<l->kursor;i++){
		if(x==l->sifra[i])
			return i;
	}
	return EndL(l);
}
int LocateL_naziv_vrsta(char unos[20], list *l, bool naziv_ili_vrsta){
	int broj = -1;
	if(naziv_ili_vrsta==true){
		for(int i=0; i<l->kursor;i++){
			if(strcmp(l->naziv[i],unos)==0)
				broj = i;
		}
	}
	else{
		for(int i=0; i<l->kursor;i++){
			if(strcmp(l->vrsta[i],unos)==0)
				broj = i;
		}
	}
	if(broj != -1)
			return broj;
	else return EndL(l);
}

void InsertL(int dan, int mjesec, int godina, int sifra, char vrsta[20],char naziv[20],float cijena, int p, list *l){      
	if(p<10000){
		for(int i=l->kursor;i>p;i--){
			l->sifra[i--] = l->sifra[i];
			l->vrsta[i--][20] = l->naziv[i][20];
			l->naziv[i--][20] = l->naziv[i][20];
			l->cijena[i--]=l->cijena[i];
			l->dan[i--] = l->dan[i];
			l->mjesec[i--] = l->mjesec[i];
			l->godina[i--] = l->godina[i];
		}
		l->sifra[p] = sifra;
		strcpy(l->vrsta[p],vrsta);
		strcpy(l->naziv[p],naziv);
		l->cijena[p]=cijena;
		l->dan[p] = dan;
		l->mjesec[p] = mjesec;
		l->godina[p] = godina;
		l->kursor++;
	}
	else cout<<"Lista je vec napunjena!\n";
}

int DeleteL(int p, list *l){
	if ((p < l->kursor) && (p >= 0)) {
		for (int i=p; i<l->kursor; i++){
			l->sifra[i] = l->sifra[i+1];
			strcpy(l->vrsta[i],l->vrsta[i+1]);
			strcpy(l->naziv[i],l->naziv[i+1]);
			l->cijena[i]=l->cijena[i+1];
			l->dan[i] = l->dan[i+1];
			l->mjesec[i] = l->mjesec[i+1];
			l->godina[i] = l->godina[i+1];
		}
		l->kursor--;
		return l->kursor;
	}
	else {
		cout<<"Element liste ne postoji!";
		return 0;
	}
}

void RetriveL(int p, list *l){
	if(p>=l->kursor){
		cout<<"Element liste ne postoji!";
	}
	else {
		cout<<"Sifra: "<<l->sifra[p]<<endl;
		cout<<"Vrsta zivotinje: "<<l->vrsta[p]<<endl;
		cout<<"Naziv zivotinje: "<<l->naziv[p]<<endl;
		cout<<"Cijena: "<<l->cijena[p]<<endl;
		cout<<"Datum dostave: "<<l->dan[p]<<"."<<l->mjesec[p]<<"."<<l->godina[p]<<"."<<endl;
		cout<<endl;
	}
}
void RetriveL_Naziv(int p, lista *l, bool naziv_vrsta){
	if(p>=l->kursor){
		cout<<"Element liste ne postoji!";
	}
	else{
		if(naziv_vrsta==true)
			cout<<l->sifra[p]<<"\t"<<l->naziv[p]<<endl;
		else cout<<l->sifra[p]<<"\t"<<l->vrsta[p]<<endl;
	}
}

void DeleteAll(list *l){
     l->kursor = 0;     
}
int br_unesenih_el(list *l){
	return l->kursor;
}
void od_zadnje_sifre(list *l, int *polje, int br_unesenih_el){
	for(int i=0; i<br_unesenih_el;i++)
		polje[i] = l->sifra[i];
	bool zamjena = true;
	for(int i=br_unesenih_el-1; i>0 && zamjena; i--){
		zamjena = false;
		for(int j = 0; j<i; j++)
			if(polje[j] > polje[j+1]){
				int pom = polje[j];
				polje[j] = polje[j+1];
				polje[j+1] = pom;
				zamjena = true;
			}
	}
	return;
}

void RetriveL_datum(list *l){
	int n = 0;
	for(int p = 0; p<(l->kursor); p++){
		if(l->godina[p] > 2012){
			cout<<"Sifra: "<<l->sifra[p]<<endl;
			cout<<"Vrsta zivotinje: "<<l->vrsta[p]<<endl;
			cout<<"Naziv zivotinje: "<<l->naziv[p]<<endl;
			cout<<"Cijena: "<<l->cijena[p]<<endl;
			cout<<"Datum dostave: "<<l->dan[p]<<"."<<l->mjesec[p]<<"."<<l->godina[p]<<"."<<endl;
			cout<<endl;
			n++;
		}
		if(l->godina[p] == 2012){
			if(l->mjesec[p] > 9){
				cout<<"Sifra: "<<l->sifra[p]<<endl;
				cout<<"Vrsta zivotinje: "<<l->vrsta[p]<<endl;
				cout<<"Naziv zivotinje: "<<l->naziv[p]<<endl;
				cout<<"Cijena: "<<l->cijena[p]<<endl;
				cout<<"Datum dostave: "<<l->dan[p]<<"."<<l->mjesec[p]<<"."<<l->godina[p]<<"."<<endl;
				cout<<endl;
				n++;
			}
		}
		if(l->godina[p] == 2012){
			if(l->mjesec[p]==9){
				if(l->dan[p]>23){
					cout<<"Sifra: "<<l->sifra[p]<<endl;
					cout<<"Vrsta zivotinje: "<<l->vrsta[p]<<endl;
					cout<<"Naziv zivotinje: "<<l->naziv[p]<<endl;
					cout<<"Cijena: "<<l->cijena[p]<<endl;
					cout<<"Datum dostave: "<<l->dan[p]<<"."<<l->mjesec[p]<<"."<<l->godina[p]<<"."<<endl;
					cout<<endl;
					n++;
				}
			}
		}
	}
	cout<<"\nUkupan broj zivotinja dostavljenih nakon 23. 9. 2012. je: "<<n<<endl;
}
int brisi_naziv(list *l, bool naziv_ili_vrsta, int izlaz){
	char naziv[20];
	naziv_ili_vrsta = true;
	do{
				cout<<"Naziv: "; unos(naziv);
				if(LocateL_naziv_vrsta(naziv, l,naziv_ili_vrsta)==EndL(l)){
					cout<<"Zivotinja sa tim nazivom ne postoji!\n";
					cout<<"1. Ponovna pretraga\n";
					cout<<"2. Izlaz\n";
					cout<<"Vas odabir: "; cin>>izlaz;}
			}while(LocateL_naziv_vrsta(naziv, l, naziv_ili_vrsta)==EndL(l) && izlaz!=2);
			if(LocateL_naziv_vrsta(naziv, l, naziv_ili_vrsta)!=EndL(l)){               //ako u do-while stsnem 2 za izlaz a ne postoji ziv izbacit ce error..i zato sam stavio jos taj if
				DeleteL(LocateL_naziv_vrsta(naziv, l, naziv_ili_vrsta), l); //LocateL(1. lociram poziciju trazenog elem, 2. i jos samo proslijedim glavu liste)
				cout<<"Obrisano!\n";
				return 1;
			}
			else return 0;

}
int brisi_vrstu(list *l, bool naziv_ili_vrsta, int izlaz){
	char vrsta[20];
	naziv_ili_vrsta = false;
	do{
				cout<<"Vrsta: "; unos(vrsta);
				if(LocateL_naziv_vrsta(vrsta, l, naziv_ili_vrsta)==EndL(l)){
					cout<<"Zivotinja s tom vrstom ne postoji!\n";
					cout<<"1. Ponovna pretraga\n";
					cout<<"2. Izlaz\n";
					cout<<"Vas odabir: "; cin>>izlaz;
				}
	}while(LocateL_naziv_vrsta(vrsta, l, naziv_ili_vrsta)==EndL(l) && izlaz!=2);
	if(LocateL_naziv_vrsta(vrsta, l, naziv_ili_vrsta)!=EndL(l)){               //ako u do-while stsnem 2 za izlaz a ne postoji trazena zivotinja izbacit ce error..i zato sam stavio jos taj if
		int broj = br_unesenih_el(l);
		do{
			DeleteL(LocateL_naziv_vrsta(vrsta, l, naziv_ili_vrsta), l); //LocateL(1. lociram poziciju trazenog elem, 2. i jos samo proslijedim glavu liste)
		}while(LocateL_naziv_vrsta(vrsta, l, naziv_ili_vrsta)!=EndL(l));          //do-while koristim zato sto zelim proc kroz listu vise puta(ako ima vise istih vrsta) i obrisat sve elemente s tom vrstom
		cout<<"Obrisano!\n";
		return 1;
	}
	else return 0;
}
 

void cijena_u_polje(list *l, float *polje_cijena, float *polje_sifra, int br_unesenih_el){
	for(int i=0; i<br_unesenih_el;i++){
		polje_cijena[i] = l->cijena[i];
		polje_sifra[i] = l->sifra[i];
	}
}
int LocateL_cijena(float x, int y, list *l){
	for(int i=0; i<l->kursor;i++){
		if(x==l->cijena[i] && y == l->sifra[i])
			return i;
	}
	return EndL(l);
}

Initial URL

                                

Initial Description
Datoteka zaglavlja u kojoj se nalazi moja implementacija liste pomoću polja.
Datoteka sadži funkcije: InitL(L), FirstL(L), EndL(L),NextL(p,L),PreviousL(p,L), LocateL(x,L), InsertL(x,p,L), DeleteL(p,L), RetreiveL(p,L), DeleteAllL(L), br_unesenih_el(L), brisi_naziv(L), brisi_vrstu(L) i cijena_u_polje(L).

Initial Title
Implemantacija_liste_pomocu_polja.h

Initial Tags
header

Initial Language
C++