Return to Snippet

Revision: 36469
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++