Return to Snippet

Revision: 36447
at November 22, 2010 02:23 by dekisanta


Initial Code
struct tdata{
  char ime[15];
  char prezime[15];
  int god;
  float stanje;
  int trans;
};
//#include "red_polje.h"
#include "red_pokazivac.h"
#include <iostream>
#include <iomanip>   
int br = 0;
tdata zapis;

void izbornik(){
  cout << "\n---Izbornik---\n\n";
  cout << "1. Dodavanje zapisa o klijentima banke u red" << endl;
  cout << "2. Izbacivanje kreditno nesposobnih klijenata iz reda" << endl;
  cout << "3. Simulacija zatvaranja jednog i otvaranja drugog saltera" << endl;
  cout << "9. Kraj programa" << endl;
  cout << "Vas izbor:";
}

void unos(tred *Q){
  cout << "\n---Unos---\n\n";
  cout << "Ime klijenta: ";
  cin >> zapis.ime;
  cout << "Prezime klijenta: ";
  cin >> zapis.prezime;
  do{
    cout << "Godina rodjenja klijenta: ";
    cin >> zapis.god;
    if(zapis.god < 1900 || zapis.god > 2000) cout << "Krivi unos!" << endl;
  }while(zapis.god < 1900 || zapis.god > 2000);
  cout << "Stanje na racunu klijenta: ";
  cin >> zapis.stanje;
  do{
    cout << "Unesite vrstu transakcije:\n(1 = uplata/isplata, 2 = placanje racuna, 3 = krediti): ";
    cin >> zapis.trans;
    if(zapis.trans < 1 || zapis.trans > 3) cout << "Krivi unos." << endl;
  }while(zapis.trans < 1 || zapis.trans > 3);

  EnQueueQ(zapis, Q);
  br++;
}

void premjestaj(tred *Q){
     tred pomocni;
     InitQ(&pomocni);
     int br2 = 0;
     
     for(int i=0; i<br; i++){
       zapis = FrontQ(Q);
       if(zapis.god > 1945){//premjestaj u pomocni red
         EnQueueQ(zapis, &pomocni);
         DeQueueQ(Q);
         br2++;
       }
       else{
         EnQueueQ(zapis, Q);//premjestaj god>65 na kraj reda
         DeQueueQ(Q);
       }
     }//for
     for(int i=0; i<br2; i++){//vracanje u originalni red
       zapis = FrontQ(&pomocni);
       DeQueueQ(&pomocni);
       EnQueueQ(zapis, Q);
     }
}

void ispis(tred *Q){
  if(IsEmptyQ(Q)) cout << "Red je prazan." << endl;
  else{
    cout << "\n---Ispis---\n\n";
    for(int i=0; i<br; i++){
      zapis = FrontQ(Q);
      cout << "----------------------------" << endl;
      cout << "Ime klijenta: " << zapis.ime << endl;
      cout << "Prezime klijenta. " << zapis.prezime << endl;
      cout << "Godina rodjenja klijenta: " << zapis.god << endl;
      cout << "Stanje na racunu: " << setprecision(2) << fixed << zapis.stanje << endl;
      cout << "Vrsta transakcije: ";
      if(zapis.trans == 1) cout << "uplata/isplata" << endl;
      else if(zapis.trans == 2) cout << "placanje racuna" << endl;
      else cout << "krediti" << endl;
      cout << "----------------------------" << endl;
    
     DeQueueQ(Q);
     EnQueueQ(zapis, Q);
    }//for
  }//else
}

void izbacivanje(tred *Q){
  int br2 = 0;
  if(IsEmptyQ(Q)) cout << endl;
  else{
    for(int i=0; i<br; i++){
      zapis = FrontQ(Q);
      if(zapis.trans == 3 && zapis.stanje < 100){
        DeQueueQ(Q);
        br2++;
      }
      else{
        DeQueueQ(Q);   
        EnQueueQ(zapis, Q);//premjestaj na kraj reda
      }
    }//for
  }//else
  br -= br2;
}

void simulacija(tred *Q){
  if(!IsEmptyQ(Q)){
    tdata holder = FrontQ(Q);
    DeQueueQ(Q);
    simulacija(Q);
    EnQueueQ(holder, Q);
  }
}

int main(){
  tred Q;
  InitQ(&Q);
  int izbor;
  char jos;
  
  do{
    izbornik();
    cin >> izbor;
    switch(izbor){
      case 1: 
        do{
        unos(&Q);
        cout << "\nJos (d/n): ";
        cin >> jos;
        }while(jos == 'd' || jos == 'D');
        premjestaj(&Q);
        ispis(&Q);
        break;
        
      case 2:
        izbacivanje(&Q);
        ispis(&Q);
        break;
      
      case 3:
        simulacija(&Q);
        ispis(&Q);
        break;
        
      case 9: 
        cout << "Kraj programa." << endl;
        break;
        
      default: 
        cout << "Krivi unos!" << endl;
    }//switch
  }while(izbor != 9);
  cout << "Pritisnite ENTER za nastavak...";
  cin.ignore();
  cin.get();
  return 0;
}

Initial URL
dekisanta_Z3_1

Initial Description


Initial Title
Glavni program (red)

Initial Tags


Initial Language
C++