Return to Snippet

Revision: 36493
at November 22, 2010 09:05 by hjurica


Updated Code
// MAIN PROGRAM - BANKA

#include <iostream>
#include <cstdlib>

#include "red_polje.h"
//#include "red_pokazivac.h"  // NE RADI!!!

using namespace std;

void dodaj_zapis (RED *Q) {
     klijent k;
     cout << "Ime i prezime: ";
     cin.ignore();
     cin.getline(k.ime,40);
     cout << "Godina rodjenja: ";
     cin >> k.god;
     cout << "Stanje racuna (kn): ";
     cin >> k.stanje;
     cout << "Transakcija (uplata, isplata, placanje ili kredit): ";
     cin.ignore();
     cin.getline(k.trans,10);
     ENQUEUEQ (k, Q);
     }
     
void provjeri (RED *Q, RED *pom) {
     klijent k;
     RED *pomoc = new RED;
     INITQ (pomoc);
     while (! ISEMPTYQ (Q)) {
           k = FRONTQ (Q);
           if (k.god < 1945){
              ENQUEUEQ (k, pomoc);
              DEQUEUEQ (Q);
              }
           else {
                ENQUEUEQ(k, pom);
                DEQUEUEQ (Q);
                }
           }
                          
     while (! ISEMPTYQ (pomoc)){
           k = FRONTQ (pomoc);
           ENQUEUEQ (k, Q);
           DEQUEUEQ (pomoc);
           }
     
     while (! ISEMPTYQ (pom)) {
           k = FRONTQ (pom);
           ENQUEUEQ (k, Q);
           DEQUEUEQ (pom);
           }
     cout << "Stanje u redu: " << endl;
     cout << "-------------------------------------" << endl;
     while (! ISEMPTYQ (Q)) {
           k = FRONTQ (Q);
           cout << "Ime i prezime: " << k.ime << endl;;
           cout << "Godina rodjenja: "<< k.god << endl;
           cout << "Stanje racuna (HRK): "<< k.stanje << endl;
           cout << "Vrsta transakcije: "<< k.trans << endl;
           cout << "---------------------------------------" << endl;
           ENQUEUEQ (k, pom);
           DEQUEUEQ (Q);
           };
     delete pomoc;
     }
     
void izbaci (RED *Q, RED *pom) {
     klijent k;
     while (! ISEMPTYQ (Q)) {
           k = FRONTQ (Q);
           if (k.stanje < 100 && (!(strcmp (k.trans, "kredit")))) {
              DEQUEUEQ (Q);
              }
           else {
                ENQUEUEQ (k, pom);
                DEQUEUEQ (Q);
                }
          }  
     
     cout << "Stanje u redu: " << endl;
     cout << "----------------------------" << endl;
     while (! ISEMPTYQ (pom)) {
           k = FRONTQ (pom);
           cout << "Ime i prezime: " << k.ime << endl;;
           cout << "Godina rodjenja: "<< k.god << endl;
           cout << "Stanje racuna (HRK): "<< k.stanje << endl;
           cout << "Vrsta transakcije: "<< k.trans << endl;
           cout << "---------------------------------------" << endl;
           ENQUEUEQ (k, Q);
           DEQUEUEQ (pom);
           };
     }
     
void simuliraj (RED *Q) {
     klijent k;
     k = FRONTQ (Q);
     DEQUEUEQ (Q);
     if (! ISEMPTYQ (Q)) simuliraj (Q);
     ENQUEUEQ (k, Q);
     
     RED *pom = INITQ (pom);
     while (! ISEMPTYQ (Q)) {
           k = FRONTQ (Q);
           cout << "Ime i prezime: " << k.ime << endl;;
           cout << "Godina rodjenja: "<< k.god << endl;
           cout << "Stanje racuna (HRK): "<< k.stanje << endl;
           cout << "Vrsta transakcije: "<< k.trans << endl;
           cout << "---------------------------------------" << endl;
           ENQUEUEQ (k, pom);
           DEQUEUEQ (Q);
           };
     }


int main () {
    RED *Q = INITQ (Q);
    RED *pom =  INITQ (pom);
    
    int izbor;
    
    do {
        cout << "\nIZBORNIK" << endl;
        cout << "====================================================" << endl;
        cout << "1. Dodavanje zapisa o klijentima." << endl;
        cout << "2. Pusti starije od 65 na pocetak reda." << endl;
        cout << "3. Izbaci iz reda klijente sa stanjem ispod 100 kn." << endl;
        cout << "4. Simuliraj zatvaranje saltera i otvaranje novog." << endl;
        cout << "0. Izlaz iz programa!" << endl;
        cout << "====================================================" << endl;
        do {
            cout << "IZBOR: ";
            cin >> izbor;
            cout << endl;
            } while (izbor < 0 || izbor > 4);
        switch (izbor) {
               case 1: 
                    dodaj_zapis (Q);
                    break;
               case 2: 
                    provjeri (Q, pom);
                    break;
               case 3: 
                    izbaci (Q, pom);
                    break;
               case 4:
                    cout << "Stanje u redu: " << endl;
                    cout << "----------------------------" << endl;
                    simuliraj (Q);
                    break;
               }
        } while (izbor != 0);
    
    return 0;
    }



// IMPLEMENTACIJA REDA POMOCU POLJA

#include <iostream>
#include <cstdlib>
using namespace std;

struct klijent {
       char ime [40];
       int god;
       float stanje;
       char trans [10];
       };

struct RED {
       klijent zapis [1000];
       int front;
       int rear;
       } Q;
       
       
       
int ADDONE(int n) {
    return((n+1)%1000);
    }


bool ISEMPTYQ (RED *Q) {
     if (ADDONE (Q->rear) == Q->front) return 1;
     else return 0;
     }

klijent FRONTQ (RED *Q) {
        if (ISEMPTYQ (Q)) cout << "Red je prazan!" << endl;
        else {
             return (Q->zapis [Q->front]);
             }
        }

klijent ENQUEUEQ (klijent x, RED *Q) {
        if (ADDONE(ADDONE(Q->rear)) == (Q->front)) cout << "Red je pun!" << endl;
        else {
             Q->rear = ADDONE(Q->rear);
             Q->zapis [Q->rear] = x;
             }
        }

void DEQUEUEQ (RED *Q) {
     if (ISEMPTYQ (Q)) cout << "Red je prazan!" << endl;
     else Q->front = ADDONE(Q->front);
     }

RED* INITQ (RED *Q) {
     Q = new RED;
     Q->front = 0;
     Q->rear = 999;
     return Q;
     }
    
    
    

// IMPLEMENTACIJA REDA POMOCU POKAZIVACA

#include <iostream>
#include <cstdlib>
using namespace std;

struct klijent {
       char ime [40];
       int god;
       float stanje;
       char trans [10];
       };

struct tzapis {
       klijent zapis;
       tzapis *sljedeci;
       };


struct RED {
       tzapis *front, *rear;
       } Q;


bool ISEMPTYQ (RED *Q) {
     if (Q->front == Q->rear) return 1;
     else return 0;
     }

klijent FRONTQ (RED *Q) {
        if (ISEMPTYQ (Q)) cout << "Red je prazan!" << endl;
        else return Q->front->sljedeci->zapis;
        }

klijent ENQUEUEQ (klijent x, RED *Q) {
        tzapis *novi = new tzapis;
        Q->rear->sljedeci = novi;
        Q->rear = Q->rear->sljedeci;
        Q->rear->zapis = x;
        Q->rear->sljedeci = 0;
        }

void DEQUEUEQ (RED *Q) {
     tzapis *pom;
     if (ISEMPTYQ (Q)) cout << "Red je prazan!" << endl;
     else {
          pom = Q->front;
          Q->front = Q->front->sljedeci;
          delete pom;
          }
     }

RED* INITQ (RED *Q) {
     Q = new RED;
     Q->front = 0;
     Q->rear = 0;
     return Q;
     }

Revision: 36492
at November 22, 2010 08:57 by hjurica


Initial Code
// MAIN PROGRAM - BANKA

#include <iostream>
#include <cstdlib>

#include "red_polje.h"
//#include "red_pokazivac.h"  // NE RADI!!!

using namespace std;

void dodaj_zapis (RED *Q) {
     klijent k;
     cout << "Ime i prezime: ";
     cin.ignore();
     cin.getline(k.ime,40);
     cout << "Godina rodjenja: ";
     cin >> k.god;
     cout << "Stanje racuna (kn): ";
     cin >> k.stanje;
     cout << "Transakcija (uplata, isplata, placanje ili kredit): ";
     cin.ignore();
     cin.getline(k.trans,10);
     ENQUEUEQ (k, Q);
     }
     
void provjeri (RED *Q, RED *pom) {
     klijent k;
     RED *pomoc = new RED;
     INITQ (pomoc);
     while (! ISEMPTYQ (Q)) {
           k = FRONTQ (Q);
           if (k.god < 1945){
              ENQUEUEQ (k, pomoc);
              DEQUEUEQ (Q);
              }
           else {
                ENQUEUEQ(k, pom);
                DEQUEUEQ (Q);
                }
           }
                          
     while (! ISEMPTYQ (pomoc)){
           k = FRONTQ (pomoc);
           ENQUEUEQ (k, Q);
           DEQUEUEQ (pomoc);
           }
     
     while (! ISEMPTYQ (pom)) {
           k = FRONTQ (pom);
           ENQUEUEQ (k, Q);
           DEQUEUEQ (pom);
           }
     cout << "Stanje u redu: " << endl;
     cout << "-------------------------------------" << endl;
     while (! ISEMPTYQ (Q)) {
           k = FRONTQ (Q);
           cout << "Ime i prezime: " << k.ime << endl;;
           cout << "Godina rodjenja: "<< k.god << endl;
           cout << "Stanje racuna (HRK): "<< k.stanje << endl;
           cout << "Vrsta transakcije: "<< k.trans << endl;
           cout << "---------------------------------------" << endl;
           ENQUEUEQ (k, pom);
           DEQUEUEQ (Q);
           };
     delete pomoc;
     }
     
void izbaci (RED *Q, RED *pom) {
     klijent k;
     while (! ISEMPTYQ (Q)) {
           k = FRONTQ (Q);
           if (k.stanje < 100 && (strcmp (k.trans, "kredit"))) {
              DEQUEUEQ (Q);
              }
           else {
                ENQUEUEQ (k, pom);
                DEQUEUEQ (Q);
                }
          }  
     
     cout << "Stanje u redu: " << endl;
     cout << "----------------------------" << endl;
     while (! ISEMPTYQ (pom)) {
           k = FRONTQ (pom);
           cout << "Ime i prezime: " << k.ime << endl;;
           cout << "Godina rodjenja: "<< k.god << endl;
           cout << "Stanje racuna (HRK): "<< k.stanje << endl;
           cout << "Vrsta transakcije: "<< k.trans << endl;
           cout << "---------------------------------------" << endl;
           ENQUEUEQ (k, Q);
           DEQUEUEQ (pom);
           };
     }
     
void simuliraj (RED *Q) {
     klijent k;
     k = FRONTQ (Q);
     DEQUEUEQ (Q);
     if (! ISEMPTYQ (Q)) simuliraj (Q);
     ENQUEUEQ (k, Q);
     
     RED *pom = INITQ (pom);
     while (! ISEMPTYQ (Q)) {
           k = FRONTQ (Q);
           cout << "Ime i prezime: " << k.ime << endl;;
           cout << "Godina rodjenja: "<< k.god << endl;
           cout << "Stanje racuna (HRK): "<< k.stanje << endl;
           cout << "Vrsta transakcije: "<< k.trans << endl;
           cout << "---------------------------------------" << endl;
           ENQUEUEQ (k, pom);
           DEQUEUEQ (Q);
           };
     }


int main () {
    RED *Q = INITQ (Q);
    RED *pom =  INITQ (pom);
    
    int izbor;
    
    do {
        cout << "\nIZBORNIK" << endl;
        cout << "====================================================" << endl;
        cout << "1. Dodavanje zapisa o klijentima." << endl;
        cout << "2. Pusti starije od 65 na pocetak reda." << endl;
        cout << "3. Izbaci iz reda klijente sa stanjem ispod 100 kn." << endl;
        cout << "4. Simuliraj zatvaranje saltera i otvaranje novog." << endl;
        cout << "0. Izlaz iz programa!" << endl;
        cout << "====================================================" << endl;
        do {
            cout << "IZBOR: ";
            cin >> izbor;
            cout << endl;
            } while (izbor < 0 || izbor > 4);
        switch (izbor) {
               case 1: 
                    dodaj_zapis (Q);
                    break;
               case 2: 
                    provjeri (Q, pom);
                    break;
               case 3: 
                    izbaci (Q, pom);
                    break;
               case 4:
                    cout << "Stanje u redu: " << endl;
                    cout << "----------------------------" << endl;
                    simuliraj (Q);
                    break;
               }
        } while (izbor != 0);
    
    return 0;
    }



// IMPLEMENTACIJA REDA POMOCU POLJA

#include <iostream>
#include <cstdlib>
using namespace std;

struct klijent {
       char ime [40];
       int god;
       float stanje;
       char trans [10];
       };

struct RED {
       klijent zapis [1000];
       int front;
       int rear;
       } Q;
       
       
       
int ADDONE(int n) {
    return((n+1)%1000);
    }


bool ISEMPTYQ (RED *Q) {
     if (ADDONE (Q->rear) == Q->front) return 1;
     else return 0;
     }

klijent FRONTQ (RED *Q) {
        if (ISEMPTYQ (Q)) cout << "Red je prazan!" << endl;
        else {
             return (Q->zapis [Q->front]);
             }
        }

klijent ENQUEUEQ (klijent x, RED *Q) {
        if (ADDONE(ADDONE(Q->rear)) == (Q->front)) cout << "Red je pun!" << endl;
        else {
             Q->rear = ADDONE(Q->rear);
             Q->zapis [Q->rear] = x;
             }
        }

void DEQUEUEQ (RED *Q) {
     if (ISEMPTYQ (Q)) cout << "Red je prazan!" << endl;
     else Q->front = ADDONE(Q->front);
     }

RED* INITQ (RED *Q) {
     Q = new RED;
     Q->front = 0;
     Q->rear = 999;
     return Q;
     }
    
    
    

// IMPLEMENTACIJA REDA POMOCU POKAZIVACA

#include <iostream>
#include <cstdlib>
using namespace std;

struct klijent {
       char ime [40];
       int god;
       float stanje;
       char trans [10];
       };

struct tzapis {
       klijent zapis;
       tzapis *sljedeci;
       };


struct RED {
       tzapis *front, *rear;
       } Q;


bool ISEMPTYQ (RED *Q) {
     if (Q->front == Q->rear) return 1;
     else return 0;
     }

klijent FRONTQ (RED *Q) {
        if (ISEMPTYQ (Q)) cout << "Red je prazan!" << endl;
        else return Q->front->sljedeci->zapis;
        }

klijent ENQUEUEQ (klijent x, RED *Q) {
        tzapis *novi = new tzapis;
        Q->rear->sljedeci = novi;
        Q->rear = Q->rear->sljedeci;
        Q->rear->zapis = x;
        Q->rear->sljedeci = 0;
        }

void DEQUEUEQ (RED *Q) {
     tzapis *pom;
     if (ISEMPTYQ (Q)) cout << "Red je prazan!" << endl;
     else {
          pom = Q->front;
          Q->front = Q->front->sljedeci;
          delete pom;
          }
     }

RED* INITQ (RED *Q) {
     Q = new RED;
     Q->front = 0;
     Q->rear = 0;
     return Q;
     }

Initial URL


Initial Description


Initial Title
SP_Zadatak_3_red

Initial Tags


Initial Language
C++