Revision: 60524
Updated Code
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
Updated Code
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
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
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++