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