Revision: 36469
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 22, 2010 05:08 by vlsekovan
Initial Code
//pomocu pokazivaca//
struct dio{
element value;
dio* next;
};//dio
struct red_t{
dio *front, *rear;
};//red_t
typedef red_t red;
void InitQ(red* Q){
Q->front=new dio;
Q->rear=Q->front;
}//InitQ
bool IsEmptyQ(red* Q){
if(Q->rear==Q->front) return 1;
return 0;
}//IsEmptyQ
element FrontQ(red* Q){
if(!IsEmptyQ(Q)) return Q->front->next->value;
}//FrontQ
void EnQueueQ(element dodaj, red* Q){
Q->rear->next=new dio;
Q->rear=Q->rear->next;
Q->rear->value=dodaj;
}//EnQueueQ
void DeQueueQ(red* Q){
dio* pomoc=Q->front;
Q->front=Q->front->next;
delete pomoc;
}//DeQueueQ
void obrisi(red* Q){
while(!IsEmptyQ(Q)) DeQueueQ(Q);
delete Q->front;
}//obrisi
//pomocu polja//
struct red_t{
element elements[10000];
int front,rear;
};//red_t
typedef red_t red;
void InitQ(red* Q){
Q->front=0;
Q->rear=9999;
}//InitQ
bool IsEmptyQ(red* Q){
if( Q->front == (Q->rear+1)%10000 ) return 1;
return 0;
}//IsEmptyQ
element FrontQ(red* Q){
if(!IsEmptyQ(Q)) return Q->elements[Q->front];
}//FrontQ
void DeQueueQ(red* Q){
if(!IsEmptyQ(Q)) Q->front++;
}//DeQueueQ
void EnQueueQ(element dodaj, red* Q){
Q->rear=(Q->rear+1)%10000;
Q->elements[Q->rear]=dodaj;
}//EnQueueQ
void obrisi(red* Q){}
//PROGRAM//
#include <iostream>
#include <cstring>
using namespace std;
struct klijent_t{
string ime;
int godina;
double stanje;
int transakcija;
};//klijent_t
typedef klijent_t element;
#include "pomocu_pokazivaca.h"
//include "pomocu_polja.h"
void dodajKlijenta(red*);
void pustiStarije(red*);
void ispisiStanje(red*);
void rekurzija(red*);
void makniNesposobne(red*);
void otvoriSalter(red*);
int main(){
int izbor=1;
red mojred;
InitQ(&mojred);
while(izbor){
system("cls");
cout<<"1. Dodaj klijenta"<<endl
<<"2. Pusti starije osobe na pocetak reda"<<endl
<<"3. Makni iz reda kreditno nesposobne osobe"<<endl
<<"4. Zatvaranje otvorenog i otvaranje novog saltera"<<endl
<<"0. Izlaz iz programa"<<endl<<endl;
cout<<"Izbor: ";
cin>>izbor;
switch(izbor){
case 0: break;
case 1: system("cls");
dodajKlijenta(&mojred);
system("pause");
break;
case 2: system("cls");
pustiStarije(&mojred);
cout<<"Svi klijenti stariji od 65 godina su pusteni na pocetak reda"<<endl<<endl;
system("pause");
system("cls");
ispisiStanje(&mojred);
system("pause");
break;
case 3: system("cls");
makniNesposobne(&mojred);
cout<<"Svi kreditno nesposobni klijenti su izasli iz reda."<<endl<<endl;
system("pause");
system("cls");
ispisiStanje(&mojred);
system("pause");
break;
case 4: system("cls");
if(IsEmptyQ(&mojred)) break;
otvoriSalter(&mojred);
cout<<"Svi klijenti su u redu za novootvoreni salter."<<endl<<endl;
system("pause");
system("cls");
ispisiStanje(&mojred);
system("pause");
break;
case 5: system("cls");
ispisiStanje(&mojred);
system("pause");
break;
default: system("cls");
cout<<"Neispravan unos."<<endl<<endl;
system("pause");
break;
}//switch
}//while
obrisi(&mojred);
return 0;
}//main
void dodajKlijenta(red* Q){
element klijent;
cout<<"Unesi ime i prezime klijenta: ";
cin.ignore();
getline(cin,klijent.ime);
cout<<"Unesi godinu rodjenja klijenta: ";
cin>>klijent.godina;
cout<<"Unesi stanje racuna klijenta: ";
cin>>klijent.stanje;
cout<<"\nUnesi transakciju koju klijent zeli obaviti:"<<endl
<<"1. uplata"<<endl
<<"2. isplata"<<endl
<<"3. placanje racuna"<<endl
<<"4. dizanje kredita"<<endl<<endl;
cout<<"Transakcija: ";
cin>>klijent.transakcija;
EnQueueQ(klijent,Q);
}//dodajKlijenta
void pustiStarije(red* Q){
if(IsEmptyQ(Q)) return;
red pomoc,stariji;
InitQ(&pomoc);
InitQ(&stariji);
while(!IsEmptyQ(Q)){
element provjeri=FrontQ(Q);
if(provjeri.godina>1945) EnQueueQ(provjeri,&pomoc);
else EnQueueQ(provjeri,&stariji);
DeQueueQ(Q);
}//while
while(!IsEmptyQ(&stariji)){
EnQueueQ(FrontQ(&stariji),Q);
DeQueueQ(&stariji);
}//while
while(!IsEmptyQ(&pomoc)){
EnQueueQ(FrontQ(&pomoc),Q);
DeQueueQ(&pomoc);
}//while
}//pustiStarije
void ispisiStanje(red* Q){
if(IsEmptyQ(Q)) return;
cout<<"Ime\t\tGodina\tStanje\tTransakcija"<<endl
<<"============================================="<<endl;
rekurzija(Q);
otvoriSalter(Q);
}//ispisiStanje
void rekurzija(red* Q){
element ispisi=FrontQ(Q);
cout<<ispisi.ime<<"\t"<<ispisi.godina<<"\t"<<ispisi.stanje<<"\t"<<ispisi.transakcija<<endl;
DeQueueQ(Q);
if(!IsEmptyQ(Q)) rekurzija(Q);
EnQueueQ(ispisi,Q);
}//rekurzija
void makniNesposobne(red* Q){
if(IsEmptyQ(Q)) return;
red pomoc;
InitQ(&pomoc);
while(!IsEmptyQ(Q)){
element citaj=FrontQ(Q);
DeQueueQ(Q);
if(citaj.stanje<100 && citaj.transakcija==4) continue;
EnQueueQ(citaj,&pomoc);
}//while
while(!IsEmptyQ(&pomoc)){
EnQueueQ(FrontQ(&pomoc),Q);
DeQueueQ(&pomoc);
}//while
}//makniNesposobne
void otvoriSalter(red* Q){
element zapamti=FrontQ(Q);
DeQueueQ(Q);
if(!IsEmptyQ(Q)) otvoriSalter(Q);
EnQueueQ(zapamti,Q);
}//otvoriSalter
Initial URL
Initial Description
Initial Title
zadatak 3 strukture podataka
Initial Tags
3
Initial Language
C++