/ Published in: C++
                    
                                        
                            
                                Expand |
                                Embed | Plain Text
                            
                        
                        Copy this code and paste it in your HTML
// 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";
}
}
Comments
 Subscribe to comments
                    Subscribe to comments
                
                