# Posted By

tosirovec on 11/21/10

# Statistics

Viewed 230 times
Favorited by 0 user(s)

# Related snippets

/ Published in: C++
`// biblioteka.polje struct tnovi{        char ime[15],prezime[15],izbor[15];       int godina, stanje;       };     typedef tnovi tipUnosa; struct tred { 	tipUnosa polje[1000];	int pocetak,kraj;    }; void InitQ(tred *red) {          red->pocetak=0;          red->kraj=999; } int AddOne(int n) { 	return((n+1)%1000); } void EnqueueQ(tipUnosa ulaz,tred *red) { 	if (AddOne(AddOne(red->kraj))==red->pocetak) exit(0); 	else {		red->kraj=AddOne(red->kraj);		red->polje[red->kraj]=ulaz;  	}} tipUnosa FrontQ(tred *red) { 	if (AddOne(red->kraj)==red->pocetak) exit(0); 	else return(red->polje[red->pocetak]); } void DequeueQ(tred *red) {	if (AddOne(red->kraj)==red->pocetak) exit(0); 	else red->pocetak=AddOne(red->pocetak); } bool IsEmptyQ(tred *red) { 	if (AddOne(red->kraj)==red->pocetak) return true; 	else return false;}   // biblioteka.pokazivaÄ struct tnovi{        char ime[15],prezime[15],izbor[15];       int godina, stanje;       };     typedef tnovi tipUnosa;  struct  tred {    	tipUnosa vrjednost;    	struct tred *next,*pocetak,*kraj;}; void InitQ(tred *red) {         tred *pom = new tred;         pom->next=NULL;             red->pocetak=pom;           red->kraj=pom; } void DequeueQ(tred *red) {     	tred *pom;    	if (red->pocetak==red->kraj) exit(0);     	else {     	     pom=red->pocetak;               red->pocetak=(red->pocetak)->next;              free(pom);                                }} void EnqueueQ( tipUnosa ulaz,tred *red) {     	tred *pom =new tred;    	pom->next=NULL;         pom->vrjednost=ulaz;         (red->kraj)->next=pom;        red->kraj=pom;} tipUnosa FrontQ(tred *red) {     	if (red->pocetak==red->kraj) exit(0);         else return(((red->pocetak)->next)->vrjednost); } bool IsEmptyQ(tred *red){      if (red->pocetak==red->kraj)          return true;     else	   return false;}   // main.program #include <iostream>#include <cstdlib>#include "RedPol.h"//#inlcude "RedPok.h"using namespace std;int broj_k=0;void unos_klijenata(tred *red);void propustanje_starijih(tred *red);void ispis(tnovi klijent);void stanje_reda(tred *red);void eliminacija(tred *red);void otvaranje_saltera(tred *red); int main(){        int unos;        tred *red = new tred;        InitQ(red);        do{                    cout << "\n\t#------------- IZBORNIK ---------------#";                    cout << "\n\t|\t1. Ulazak u banku              |";                    cout << "\n\t|\t2. Izbaci nepogodne za kredit  |";                           cout << "\n\t|\t3. Otvori novi salter          |";                    cout << "\n\t|\t0. Izlaz iz programa           |";                    cout << "\n\t#--------------------------------------#";                    cout << "\n\t\t\tVas izbor: ";                    cin >> unos;                    switch(unos){                                 case 1:                                      cout <<"\n#------------- Ulazak ---------------#\n";                                      unos_klijenata(red);                                      propustanje_starijih(red);                                      stanje_reda(red);                                 break;                                 case 2:                                      eliminacija(red);                                      stanje_reda(red);                                 break;                                  case 3:                                      otvaranje_saltera(red);                                      propustanje_starijih(red);                                      stanje_reda(red);                                 break;                                  case 0:                                 break;                                 default: cout << "\nPogresan unos!!\n";                                  }        }while(unos != 0);        return 0;    }; void ispis(tnovi klijent){         cout <<"Ime klijenta : "<<klijent.ime<<endl;         cout <<"Prezime klijenta : "<<klijent.prezime<<endl;             cout <<"Godina rodenja   : "<<klijent.godina<<endl;         cout <<"Stanje racuna    : "<<klijent.stanje<<endl;         cout <<"Vrsta transakcije : \n\t\t"<<klijent.izbor<<endl;         cout <<"#------------------------------------#\n";       } void stanje_reda(tred *red){         cout <<"\n#------------ Stanje reda -----------#\n";         for (int i=0;i<broj_k;i++){              ispis(FrontQ(red));              EnqueueQ(FrontQ(red),red);              DequeueQ(red);            }     } void otvaranje_saltera(tred *red){     tnovi klijent;     if (!IsEmptyQ(red)){        klijent = FrontQ(red);        DequeueQ(red);        otvaranje_saltera(red);     }     else return;     EnqueueQ(klijent,red);} void eliminacija(tred *red){     tnovi klijent;     int br=0;     cout <<"\n#------------ Eliminacija -----------#\n";     for (int i=0;i<broj_k;i++){          klijent = FrontQ(red);          if (klijent.stanje<100 && !strcmp(klijent.izbor,"Kreditiranje")){             ispis(klijent);             br--;                                 }          else EnqueueQ(klijent,red);          DequeueQ(red);        }     broj_k+=br;         } void propustanje_starijih(tred *red){         tred *p_red = new tred;         InitQ(p_red);         for (int i=0;i<broj_k;i++){             if (FrontQ(red).godina<1945){                EnqueueQ(FrontQ(red),red);                                        }             else{                EnqueueQ(FrontQ(red),p_red);               }             DequeueQ(red);         }         while (!IsEmptyQ(p_red)){                EnqueueQ(FrontQ(p_red),red);                DequeueQ(p_red)  ;            }           }; void  unos_klijenata(tred *red){          tnovi klijent;          int iz,k;          cout <<"Koliko klijenata ulazi : ";          cin >> k;          for (int i=0;i<k;i++){              cout <<"Unesite ime : ";              cin.ignore();              cin.getline(klijent.ime,14);              cout <<"Unesite preime : ";              cin.getline(klijent.prezime,14);              cout <<"Unesite stanje racuna : ";              cin >> klijent.stanje;              cout <<"Unesite godine : ";              cin >> klijent.godina;               do{                  cout <<"Tip transakcije : \n\t1. Uplata/Isplata\n\t2. Kreditiranje\n\t3. Placanja\nIzbor : ";                  cin >> iz ;                  if (iz==1) strcpy(klijent.izbor,"Uplata/Isplata");                  else if (iz==2) strcpy(klijent.izbor,"Kreditiranje");                  else if (iz==3) strcpy(klijent.izbor,"Placanja");                  else cout <<"\nNepostojeca opcija!!\n";              }while (iz != 1 && iz != 2 && iz != 3);              EnqueueQ(klijent,red);               broj_k++;              cout <<"#------------------------------------#\n";          }                         }`