bozidarlabas
12/16/2012 - 5:10 PM

Implementacija reda pomocu pokazivaca

#include <iostream>
//#include "red_pokazivac.h"
#include "red_polje.h"
#include <ctime>
#include <string.h>
#define BR_UK int(br-(br*0.3) + 0.5)


using namespace std;
telement *glavni_red = new telement;
telement *gl_pomocni = new telement;
telement *glavni2 = new telement;
telement *brzi = new telement;
telement* rek = new telement;
int br_klijenata = 0;
int brojac=0;
int br_obrisanih = 0;
int posto30 = 0;
int br = 0;
void generiranje(int ai[], int bi[],int ci[],int di[], int N, telement *glavni_red){
  int Ci, Di;
	srand((unsigned int)time(NULL));
	for(int i = 0; i<N; i++){
		ai[i] = (rand() % 401) + 100;
		bi[i] = (rand() % 401) + 100;
		ci[i] = rand() % 6;
		di[i] = rand() % 4;
	}
}//generiranje
void wait( int seconds) {
	clock_t endwait;
	endwait = clock () + seconds * CLOCKS_PER_SEC ;
	while (clock() < endwait) {}
}
void ucitavanje(char ispisi[]){
	system("cls");
	cout<<ispisi<<"\n\n";
	for(int i = 0; i<3; i++){
		cout<<".";
		wait(1),system("cls"), cout<<ispisi<<"\n\n";
		cout<<" .";
		wait(1),system("cls"), cout<<ispisi<<"\n\n";
		cout<<"  .";
		wait(1),system("cls"), cout<<ispisi<<"\n\n";
	}
	system("cls");
}
void ispis_tecaja(){
	cout<<"_________________________________________________\n"
		<<"Red.br.\tZemlja\t\tValuta\t\tTecaj\t |\n"
		<<"_________________________________________________|\n"
		<<"_________________________________________________|\n"
		<<"1.\tEMU\t\tEUR\t\t7,501656 |\n"   
		<<"2.\tSAD\t\tUSD\t\t5,732582 |\n"  
		<<"3.\tVel. Britanija\tGBP\t\t9,231672 |\n"  
		<<"4.\tSvicarska\tCHF\t\t6,174711 |\n"    
		<<"5.\tJapan\t\tJPY\t\t6,974392 |\n"  
		<<"_________________________________________________|\n\n";
}
void dodaj_zapis(int ai[], int bi[],int ci[],int di[], int N, telement *glavni_red){
	char Cx[6][21] = {"Umirovljenik","Invalid","Trudnica","VIP klijent banke","Ostali klijent banke","Nije klijent banke"};
	char Dx[4][9] = {"Uplata","Isplata","Placanje","Krediti"};
	int brojac = 0, izbor;
	float deviza = 0;
	system("cls");
	cout<<"Dodavanje zapisa o klijentima banke u red |\n"
		<<"__________________________________________|\n";
	while(N!=0){
		tklijent *klijent = new tklijent;
		klijent->ai = ai[brojac];
		klijent->bi = bi[brojac];
		strcpy(klijent->ci,Cx[ci[brojac]]);
		strcpy(klijent->di,Dx[di[brojac]]);
		
		klijent->prioritet = ci[brojac];
		cout<<endl<<brojac+1<<". klijent\n"
			<<"Prioritet: "
			<<klijent->ci<<endl
			<<"Transkakcija: "
			<<klijent->di<<endl<<endl;
		cout<<"Ime i prezime: "; cin.ignore(), cin.getline(klijent->pre_ime,30);
		cout<<"Datum rodenja(dd.mm.gggg.): ", cin>>klijent->datum_znak;
			klijent->datum_broj = atoi(klijent->datum_znak + strlen(klijent->datum_znak) - 5);
		cout<<"Stanje na tekucem racunu(HRK): ", cin>>klijent->tekuci_racun;
		ispis_tecaja();
		cout<<"Devizni racun\n_________________________\nOdaberite redni broj za valutu: ", cin>>izbor;
		if(izbor==1) cout<<"Stanje na deviznom racunu(EUR): ", cin>> deviza, klijent->devizni_racun = deviza * 7.501656;
		else if(izbor==2) cout<<"Stanje na deviznom racunu(USD): ", cin>> deviza, klijent->devizni_racun = deviza*5.732582;
		else if(izbor==3) cout<<"Stanje na deviznom racunu(GBP): ", cin>> deviza, klijent->devizni_racun = deviza*9.231672;
		else if(izbor==4) cout<<"Stanje na deviznom racunu(CHF): ", cin>> deviza, klijent->devizni_racun = deviza*6.174711;
		else if(izbor==5) cout<<"Stanje na deviznom racunu(JPY): ", cin>> deviza, klijent->devizni_racun = deviza*6.974392;
		EnQueueQ(klijent, glavni_red);
		brojac++;
		N--;
		system("cls");
	}	
}
void ispis(telement *glavni_red, telement *gl_pomocni){
	if(IsEmptyQ(gl_pomocni)) return;
	tklijent *klijent = new tklijent;
	klijent = FrontQ(gl_pomocni);
	cout<<"Ispis klijenata koji imaju na deviznom racunu vise od 10000 kuna |\n"
		<<"_________________________________________________________________|\n\n";
	while(1){
		if(klijent->devizni_racun > 10000){
			cout<<"Ime i prezime: "<<klijent->pre_ime<<endl
				<<"Datum rodenja: "<<klijent->datum_znak<<endl
				<<"Prioritet klijenta: "<<klijent->ci<<endl
				<<"Transakcija koju klijent zeli obaviti: "<<klijent->di<<endl
				<<"Stanje na tekucem racunu: "<<klijent->tekuci_racun<<" kuna\n"
				<<"Stanje na deviznom racunu(preracunato u kune): "<<klijent->devizni_racun<<" kuna\n\n";
		}
		DeQueueQ(gl_pomocni);
		if(IsEmptyQ(gl_pomocni)==1) break;
		klijent = FrontQ(gl_pomocni);
	}
}
void zaglavlje(){
	cout<<" ____________________________________\n"
		<<"|                                    |\n"
		<<"| PROGRAM ZA SIMULACIJU REDA U BANCI |\n"
		<<"|____________________________________|\n";
}
void ispis2(telement *glavni_red){
	if(IsEmptyQ(glavni_red)) return;
	tklijent *klijent = new tklijent;
	klijent = FrontQ(glavni_red);
	cout<<"Ispis klijenata koji imaju na deviznom racunu vise od 10000 kuna |\n"
		<<"_________________________________________________________________|\n\n";
	while(1){
			cout<<"Ime i prezime: "<<klijent->pre_ime<<endl
				<<"Datum rodenja: "<<klijent->datum_znak<<endl
				<<"Prioritet klijenta: "<<klijent->ci<<endl
				<<"Transakcija koju klijent zeli obaviti: "<<klijent->di<<endl
				<<"Stanje na tekucem racunu: "<<klijent->tekuci_racun<<" kuna\n"
				<<"Stanje na deviznom racunu(preracunato u kune): "<<klijent->devizni_racun<<" kuna\n\n";
		
		DeQueueQ(glavni_red);
		if(IsEmptyQ(glavni_red)==1) break;
		klijent = FrontQ(glavni_red);
	}
}
void ispis3(int N, telement* glavni_red2, telement* glavni_red1){
	if(IsEmptyQ(glavni_red2)) return;
	tklijent *pomocna = new tklijent;
	tklijent *pomocno_polje = new tklijent[N];

	while(IsEmptyQ(glavni_red2)==0){
		pomocna = FrontQ(glavni_red2);

		if(strcmp(pomocna->ci,"")==0){DeQueueQ(glavni_red2);}
		else{
		pomocno_polje[br].ai = pomocna->ai, pomocno_polje[br].bi = pomocna->bi, strcpy(pomocno_polje[br].ci,pomocna->ci), strcpy(pomocno_polje[br].di, pomocna->di);
		pomocno_polje[br].datum_broj = pomocna->datum_broj, strcpy(pomocno_polje[br].datum_znak,pomocna->datum_znak), pomocno_polje[br].devizni_racun = pomocna->devizni_racun;
		strcpy(pomocno_polje[br].pre_ime, pomocna->pre_ime), pomocno_polje[br].prioritet = pomocna->prioritet, pomocno_polje[br].tekuci_racun = pomocna->tekuci_racun;
		DeQueueQ(glavni_red2);
		cout<<"Ime i prezime: "<<pomocna->pre_ime<<endl
				<<"Datum rodenja: "<<pomocna->datum_znak<<endl
				<<"Prioritet klijenta: "<<pomocna->ci<<endl
				<<"Transakcija koju klijent zeli obaviti: "<<pomocna->di<<endl
				<<"Stanje na tekucem racunu: "<<pomocna->tekuci_racun<<" kuna\n"
				<<"Stanje na deviznom racunu(preracunato u kune): "<<pomocna->devizni_racun<<" kuna\n\n";
		br++;
		}
	}

	for(int i = 0; i<br; i++){
			tklijent *pomoc = new tklijent;
			
		
				pomoc->ai = pomocno_polje[i].ai, pomoc->bi = pomocno_polje[i].bi, strcpy(pomoc->ci,pomocno_polje[i].ci), strcpy(pomoc->di, pomocno_polje[i].di);
				pomoc->datum_broj = pomocno_polje[i].datum_broj, strcpy(pomoc->datum_znak,pomocno_polje[i].datum_znak), pomoc->devizni_racun = pomocno_polje[i].devizni_racun;
				strcpy(pomoc->pre_ime, pomocno_polje[i].pre_ime), pomoc->prioritet = pomocno_polje[i].prioritet, pomoc->tekuci_racun = pomocno_polje[i].tekuci_racun;
				EnQueueQ(pomoc,glavni_red1);
			
	}
}
void iz_polja_u_red(tklijent novi[], int N, telement *red, bool u_i){

	if(u_i == true){
		tklijent *novi2 = new tklijent;
		int  i = 0;
		while(IsEmptyQ(glavni_red)==0){
			novi2 = FrontQ(glavni_red);
			DeQueueQ(glavni_red);
			novi[i].ai = novi2->ai, novi[i].bi = novi2->bi, strcpy(novi[i].ci,novi2->ci), strcpy(novi[i].di, novi2->di);
			novi[i].datum_broj = novi2->datum_broj, strcpy(novi[i].datum_znak,novi2->datum_znak), novi[i].devizni_racun = novi2->devizni_racun;
			strcpy(novi[i].pre_ime, novi2->pre_ime), novi[i].prioritet = novi2->prioritet, novi[i].tekuci_racun = novi2->tekuci_racun;
			i++;
		}
	}

	else{
		for(int i2 = 0; i2<N; i2++){
				tklijent *pomoc = new tklijent;
				pomoc->ai = novi[i2].ai, pomoc->bi = novi[i2].bi, strcpy(pomoc->ci,novi[i2].ci), strcpy(pomoc->di, novi[i2].di);
				pomoc->datum_broj = novi[i2].datum_broj, strcpy(pomoc->datum_znak,novi[i2].datum_znak), pomoc->devizni_racun = novi[i2].devizni_racun;
				strcpy(pomoc->pre_ime, novi[i2].pre_ime), pomoc->prioritet = novi[i2].prioritet, pomoc->tekuci_racun = novi[i2].tekuci_racun;
				EnQueueQ(pomoc,red);
			}
	}
}
void prioritet_preslozi(int N, telement *glavni_red, telement *gl_pomocni){
	bool u_i = true;
	char preslagivanje[] = {"Preslagivanje klijenata prema prioritetu!"};
	int i = 0;
	telement *pomocni = new telement;
	tklijent *novi = new tklijent[N];
	cout<<"Unos gotov!\n\n", wait(1);
	ucitavanje(preslagivanje);
	iz_polja_u_red(novi, N,glavni_red, u_i = true);

	for(int i = 0; i<N; i++){
		int j = i-1;
		int pomocna = novi[i].prioritet;
		tklijent pomocna2 = novi[i];
		while(j>=0&&novi[j].prioritet > pomocna){
			novi[j+1] = novi[j--];
			novi[j+1] = pomocna2;
		}
	}
	cout<<"Klijenti uspjesno preslozeni prema prioritetu!\n\n";
	wait(1), system("cls");
	iz_polja_u_red(novi, N,glavni_red,u_i =false);
	iz_polja_u_red(novi,N,gl_pomocni,u_i =false);
	delete novi;
}
int simulacija_brzih(int N, tklijent *pomocno_polje, telement *glavni_red, telement *brzi){
	int br = 0;
	char simulacija[] = {"Pokretanje simulacije reda brzih transakcija"};
	if(IsEmptyQ(glavni_red)==1){
		cout<<"Zapisi nisu dodani!\n";
		return 0;}
	ucitavanje(simulacija);		
	tklijent *pomocna = new tklijent;
	while(IsEmptyQ(glavni_red)==0){
		pomocna = FrontQ(glavni_red);
		pomocno_polje[br].ai = pomocna->ai, pomocno_polje[br].bi = pomocna->bi, strcpy(pomocno_polje[br].ci,pomocna->ci), strcpy(pomocno_polje[br].di, pomocna->di);
		pomocno_polje[br].datum_broj = pomocna->datum_broj, strcpy(pomocno_polje[br].datum_znak,pomocna->datum_znak), pomocno_polje[br].devizni_racun = pomocna->devizni_racun;
		strcpy(pomocno_polje[br].pre_ime, pomocna->pre_ime), pomocno_polje[br].prioritet = pomocna->prioritet, pomocno_polje[br].tekuci_racun = pomocna->tekuci_racun;
		DeQueueQ(glavni_red);
		br++;
	}
		cout<<"STANJE GLAVNOG REDA\n__________________\n\n";
		for(int i = 0; i<N; i++){
			tklijent *pomoc = new tklijent;
			pomoc->ai = pomocno_polje[i].ai, pomoc->bi = pomocno_polje[i].bi, strcpy(pomoc->ci,pomocno_polje[i].ci), strcpy(pomoc->di, pomocno_polje[i].di);
			pomoc->datum_broj = pomocno_polje[i].datum_broj, strcpy(pomoc->datum_znak,pomocno_polje[i].datum_znak), pomoc->devizni_racun = pomocno_polje[i].devizni_racun;
			strcpy(pomoc->pre_ime, pomocno_polje[i].pre_ime), pomoc->prioritet = pomocno_polje[i].prioritet, pomoc->tekuci_racun = pomocno_polje[i].tekuci_racun;
			if((strcmp(pomoc->di,"Placanje")==0)){}
			else{
				cout<<"Ime i prezime: "<<pomoc->pre_ime<<endl
				<<"Datum rodenja: "<<pomoc->datum_znak<<endl
				<<"Prioritet klijenta: "<<pomoc->ci<<endl
				<<"Transakcija koju pomoc zeli obaviti: "<<pomoc->di<<endl
				<<"Stanje na tekucem racunu: "<<pomoc->tekuci_racun<<" kuna\n"
				<<"Stanje na deviznom racunu(preracunato u kune): "<<pomoc->devizni_racun<<" kuna\n\n";
				EnQueueQ(pomoc,glavni_red);
			}
		}
		cout<<"STANJE BRZOG REDA\n__________________\n\n";

		for(int i = 0; i<N; i++){
			tklijent *pomoc = new tklijent;
			pomoc->ai = pomocno_polje[i].ai, pomoc->bi = pomocno_polje[i].bi, strcpy(pomoc->ci,pomocno_polje[i].ci), strcpy(pomoc->di, pomocno_polje[i].di);
			pomoc->datum_broj = pomocno_polje[i].datum_broj, strcpy(pomoc->datum_znak,pomocno_polje[i].datum_znak), pomoc->devizni_racun = pomocno_polje[i].devizni_racun;
			strcpy(pomoc->pre_ime, pomocno_polje[i].pre_ime), pomoc->prioritet = pomocno_polje[i].prioritet, pomoc->tekuci_racun = pomocno_polje[i].tekuci_racun;
			if(strcmp(pomoc->di,"Placanje")==0){
				cout<<"Ime i prezime: "<<pomoc->pre_ime<<endl
				<<"Datum rodenja: "<<pomoc->datum_znak<<endl
				<<"Prioritet klijenta: "<<pomoc->ci<<endl
				<<"Transakcija koju pomoc zeli obaviti: "<<pomoc->di<<endl
				<<"Stanje na tekucem racunu: "<<pomoc->tekuci_racun<<" kuna\n"
				<<"Stanje na deviznom racunu(preracunato u kune): "<<pomoc->devizni_racun<<" kuna\n\n";
				EnQueueQ(pomoc,brzi);
			}
		}		
}
void brisanje(int N,telement *glavni_red, telement* gl_pomocni2){
	bool u_i = true;
	int br = 0;
	tklijent *pomocna = new tklijent;
	tklijent *pomocno_polje = new tklijent[N];

	while(IsEmptyQ(glavni_red)==0){
		pomocna = FrontQ(glavni_red);
		pomocno_polje[br].ai = pomocna->ai, pomocno_polje[br].bi = pomocna->bi, strcpy(pomocno_polje[br].ci,pomocna->ci), strcpy(pomocno_polje[br].di, pomocna->di);
		pomocno_polje[br].datum_broj = pomocna->datum_broj, strcpy(pomocno_polje[br].datum_znak,pomocna->datum_znak), pomocno_polje[br].devizni_racun = pomocna->devizni_racun;
		strcpy(pomocno_polje[br].pre_ime, pomocna->pre_ime), pomocno_polje[br].prioritet = pomocna->prioritet, pomocno_polje[br].tekuci_racun = pomocna->tekuci_racun;
		DeQueueQ(glavni_red);
		br++;
	}
	
	for(int i = 0; i<N; i++){
			tklijent *pomoc = new tklijent;
			pomoc->ai = pomocno_polje[i].ai, pomoc->bi = pomocno_polje[i].bi, strcpy(pomoc->ci,pomocno_polje[i].ci), strcpy(pomoc->di, pomocno_polje[i].di);
			pomoc->datum_broj = pomocno_polje[i].datum_broj, strcpy(pomoc->datum_znak,pomocno_polje[i].datum_znak), pomoc->devizni_racun = pomocno_polje[i].devizni_racun;
			strcpy(pomoc->pre_ime, pomocno_polje[i].pre_ime), pomoc->prioritet = pomocno_polje[i].prioritet, pomoc->tekuci_racun = pomocno_polje[i].tekuci_racun;
			

			if( ((strcmp(pomoc->ci,"Umirovljenik")==0) && (strcmp(pomoc->di,"Isplata")==0) && (pomoc->tekuci_racun>5000)) ||
				((strcmp(pomoc->ci,"VIP klijent banke")==0) && (strcmp(pomoc->di,"Uplata")==0) && (pomoc->tekuci_racun<100) && (pomoc->datum_broj >= 1982))){br_obrisanih++;}
			else{
				EnQueueQ(pomoc,gl_pomocni2);
			}
		}
}
int brojac2 = 0;
int u_glavnom = 0;



void r(telement* glavni_red,telement* drugi_red, tklijent* pomocno_polje){
	tklijent* p = new tklijent;
	if(rekurzija==true){
		if(brojac2 < BR_UK){
			u_glavnom++;
			p = FrontQ(glavni_red);
			brojac2++;
			DeQueueQ(glavni_red);
			r(glavni_red,drugi_red, pomocno_polje);
		}
	}
	else{
		p = FrontQ(glavni_red);
		if(brojac2 < BR_UK){
			u_glavnom++;
			brojac2++;
			DeQueueQ(glavni_red);
			r(glavni_red,drugi_red, pomocno_polje);
		}
	}

	if(brojac2==BR_UK){
		int bro = 0;
		
		while(brojac2 < br){
			posto30++;
			
			tklijent* p2 = new tklijent;
			
			p2 = FrontQ(glavni_red);
			
			
			pomocno_polje[bro].ai = p2->ai, pomocno_polje[bro].bi = p2->bi, strcpy(pomocno_polje[bro].ci,p2->ci), strcpy(pomocno_polje[bro].di, p2->di);
			pomocno_polje[bro].datum_broj = p2->datum_broj, strcpy(pomocno_polje[bro].datum_znak,p2->datum_znak), pomocno_polje[bro].devizni_racun = p2->devizni_racun;
			strcpy(pomocno_polje[bro].pre_ime, p2->pre_ime), pomocno_polje[bro].prioritet = p2->prioritet, pomocno_polje[bro].tekuci_racun = p2->tekuci_racun;
			bro++;
			DeQueueQ(glavni_red);
			brojac2++;
		}
	}
	if(rekurzija==true){
		if(strcmp(p->pre_ime,"")==0){}
		else
			EnQueueQ(p,glavni_red);
	}
	else
		EnQueueQ(p,glavni_red);
}
void zadnji(tklijent* pomocno_polje, telement* novi_red, int n_prebacenih30){
	for(int i = posto30 - 1; i>=0; i--){

		tklijent *pomoc = new tklijent;
			
		
		pomoc->ai = pomocno_polje[i].ai, pomoc->bi = pomocno_polje[i].bi, strcpy(pomoc->ci,pomocno_polje[i].ci), strcpy(pomoc->di, pomocno_polje[i].di);
		pomoc->datum_broj = pomocno_polje[i].datum_broj, strcpy(pomoc->datum_znak,pomocno_polje[i].datum_znak), pomoc->devizni_racun = pomocno_polje[i].devizni_racun;
		strcpy(pomoc->pre_ime, pomocno_polje[i].pre_ime), pomoc->prioritet = pomocno_polje[i].prioritet, pomoc->tekuci_racun = pomocno_polje[i].tekuci_racun;
		EnQueueQ(pomoc,novi_red);
	}
}
void preslozi_glavni(telement* glavni_red, tklijent* pomocno_polje){
	int br = 0;
	tklijent *pomocna = new tklijent;

	while(IsEmptyQ(glavni_red)==0){
		pomocna = FrontQ(glavni_red);
		pomocno_polje[br].ai = pomocna->ai, pomocno_polje[br].bi = pomocna->bi, strcpy(pomocno_polje[br].ci,pomocna->ci), strcpy(pomocno_polje[br].di, pomocna->di);
		pomocno_polje[br].datum_broj = pomocna->datum_broj, strcpy(pomocno_polje[br].datum_znak,pomocna->datum_znak), pomocno_polje[br].devizni_racun = pomocna->devizni_racun;
		strcpy(pomocno_polje[br].pre_ime, pomocna->pre_ime), pomocno_polje[br].prioritet = pomocna->prioritet, pomocno_polje[br].tekuci_racun = pomocna->tekuci_racun;
		DeQueueQ(glavni_red);
		br++;
	}

	for(int i = u_glavnom-1; i>=0; i--){
			tklijent *pomoc = new tklijent;
			pomoc->ai = pomocno_polje[i].ai, pomoc->bi = pomocno_polje[i].bi, strcpy(pomoc->ci,pomocno_polje[i].ci), strcpy(pomoc->di, pomocno_polje[i].di);
			pomoc->datum_broj = pomocno_polje[i].datum_broj, strcpy(pomoc->datum_znak,pomocno_polje[i].datum_znak), pomoc->devizni_racun = pomocno_polje[i].devizni_racun;
			strcpy(pomoc->pre_ime, pomocno_polje[i].pre_ime), pomoc->prioritet = pomocno_polje[i].prioritet, pomoc->tekuci_racun = pomocno_polje[i].tekuci_racun;
			EnQueueQ(pomoc,glavni_red);
	}
}
void izbornik(){
	
	bool generirano = false, zapisi_dodani=false;
	int N = 0, izbor, redni_br = 0;
	zaglavlje();
	cout<<"\n Broj klijenata: ";
	cin>>N, system("cls");
	tklijent *pomocno_polje=new tklijent[N];
	tklijent *pomocno_polje_n = new tklijent[N];
	tklijent *pomocno_polje_n2 = new tklijent[N];
	int *ai = new int[N]; 
	int *bi = new int[N]; 
	int *ci = new int[N]; 
	int *di = new int[N]; 
	do{
		zaglavlje();
		cout<<" _________________________________________________________\n";
		if(generirano==true){
			if(zapisi_dodani==false){
				cout<<"| 1. Niz od N cetvorki je generiran! \t\t\t  |\n| 2. Dodavanje zapisa o klijentima \t\t\t  |\n| 3. Simulacija reda brzih transkakcija (placanje racuna) |\n| 4. Brisanje klijenata \t\t\t\t  |\n| 5. Simulacija novog reda \t\t\t\t  |\n";
			}
			else cout<<"| 1. Niz od N cetvorki je generiran! \t\t\t  |\n| 2. Zapisi o klijentima su dodani! \t\t\t  |\n| 3. Simulacija reda brzih transkakcija (placanje racuna) |\n| 4. Brisanje klijenata \t\t\t\t  |\n| 5. Simulacija novog reda \t\t\t\t  |\n";
		}
		if(generirano==false && zapisi_dodani==false) cout<<"| 1. Generiranje niza od N cetvorki \t\t\t  |\n| 2. Dodavanje zapisa o klijentima \t\t\t  |\n| 3. Simulacija reda brzih transkakcija (placanje racuna) |\n| 4. Brisanje klijenata \t\t\t\t  |\n| 5. Simulacija novog reda \t\t\t\t  |\n";
		cout<<"|_________________________________________________________|\n";
		cin>>izbor;
		switch(izbor){
		case 1:
			generiranje(ai, bi, ci, di, N, glavni_red);
			generirano = true;
			system("cls");
			break;
		case 2:
			if(zapisi_dodani == true){ 
				system("cls"); 
				break;}
			if(generirano) dodaj_zapis(ai, bi, ci, di, N, glavni_red);
			else{
				system("cls"), cout<<"Niz od N cetvorki nije generiran!\n";
				break;}
			prioritet_preslozi(N, glavni_red, gl_pomocni);
			ispis(glavni_red, gl_pomocni);
			zapisi_dodani = true;
			break;
		case 3:
			simulacija_brzih(N, pomocno_polje, glavni_red, brzi);
			break;
		case 4: 
			system("cls");
			cout<<"BRISANJE\n\n";
			cout<<" _____________________________________________________________\n\n";
			cout<<"|     PRIORITET   |  TRANSAKCIJA  |  TEKUCI RECUN  |  GODINE  |\n"
				<<"|_________________|_______________|________________|__________|\n"
				<<"|       vip       |    uplata     |    <100kn      |  <30     |\n"
				<<"|  umirovljenici  |    isplata    |    >5000kn     |   -      |\n"
				<<"|_________________|_______________|________________|__________|\n\n";


			brisanje(N,glavni_red, glavni2);
			ispis3(N, glavni2, glavni_red);
			break;
		case 5:
			system("cls");
			char simulacija[] = {"Pokretanje simulacije novog reda"};
			ucitavanje(simulacija);
			r(glavni_red, rek, pomocno_polje_n);
			cout<<"STANJE GLAVNOG REDA\n"
				<<"___________________\n\n";
			preslozi_glavni(glavni_red, pomocno_polje_n2);
			ispis2(glavni_red);
			cout<<"\n\nSTANJE NOVOG REDA\n"
				<<"___________________\n\n";
			zadnji(pomocno_polje_n, rek, N);
			ispis2(rek);
			break;
		}
	}while(izbor!=9);
}

int main(){
	InitQ(glavni_red);
	InitQ(gl_pomocni);
	InitQ(brzi);
	InitQ(glavni2);
	InitQ(rek);
	izbornik();

	system("pause");
	return 0;
}
#include <iostream>
using namespace std;

struct tklijent{
  int ai, bi, datum_broj, prioritet;
	float tekuci_racun, devizni_racun;
	char pre_ime[30], datum_znak[11], ci[25], di[10];
};

struct telement{
	tklijent *klijent[10000];
	int front, rear;
};

int AddOne(int n){
	return ((n+1) % 10000);
}

void InitQ(telement *element){					  
	element->front = 0;
	element->rear = 9999;
}

int IsEmptyQ(telement *element){                
	int rear = element->rear;					 
	if(AddOne(rear)==element->front) return 1;
	return 0;
}

tklijent *FrontQ(telement *element){              
	if(!IsEmptyQ) cout<<"Red je prazan!\n";        
	return element->klijent[element->front];
}

void EnQueueQ(tklijent *klijent, telement *element){	   
	if(AddOne(AddOne(element->rear))==(element->front))   
		cout<<"Red je pun!\n\n";						   
	else{
		element->rear = AddOne(element->rear);
		element->klijent[element->rear] = klijent;
	}
}

void DeQueueQ(telement *element){				 
	element->front++;
}
bool rekurzija = true;

#include <iostream>
using namespace std;

struct tklijent{
  int ai, bi, datum_broj, prioritet;
	float tekuci_racun, devizni_racun;
	char pre_ime[30], datum_znak[11], ci[25], di[10];
	tklijent *sljedeci;
};

struct telement{
	tklijent *front, *rear;
};

int AddOne(int n){
	return ((n+1) % 10000);
}

void InitQ(telement *element){				
	tklijent *glava = new tklijent;
	glava->sljedeci = NULL;
	element->front = glava;
	element->rear = glava;
}

bool IsEmptyQ(telement *element){				
	if(element->rear==element->front) return 1;			
	return 0;
}

tklijent *FrontQ(telement *element){				
	tklijent *klijent;							
	klijent = element->front->sljedeci;
	return klijent;
}

void EnQueueQ(tklijent *klijent, telement *element){		
	element->rear->sljedeci = klijent;						
	klijent->sljedeci = NULL;
	element->rear = klijent;
}

void DeQueueQ(telement *element){					
	tklijent *glava = new tklijent;
	glava = element->front;
	element->front = glava->sljedeci;
	delete glava;
}

bool rekurzija = false;