Revision: 36362
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 21, 2010 04:14 by tosirovec
Initial Code
// biblioteka.polje struct tnovi{ char ime[15],prezime[15],izbor[15]; int godina, stanje; }; typedef tnovi tipUnosa; struct tred { tipUnosa polje[1000]; int pocetak,kraj; }; void InitQ(tred *red) { red->pocetak=0; red->kraj=999; } int AddOne(int n) { return((n+1)%1000); } void EnqueueQ(tipUnosa ulaz,tred *red) { if (AddOne(AddOne(red->kraj))==red->pocetak) exit(0); else { red->kraj=AddOne(red->kraj); red->polje[red->kraj]=ulaz; } } tipUnosa FrontQ(tred *red) { if (AddOne(red->kraj)==red->pocetak) exit(0); else return(red->polje[red->pocetak]); } void DequeueQ(tred *red) { if (AddOne(red->kraj)==red->pocetak) exit(0); else red->pocetak=AddOne(red->pocetak); } bool IsEmptyQ(tred *red) { if (AddOne(red->kraj)==red->pocetak) return true; else return false; } // biblioteka.pokazivaÄ struct tnovi{ char ime[15],prezime[15],izbor[15]; int godina, stanje; }; typedef tnovi tipUnosa; struct tred { tipUnosa vrjednost; struct tred *next,*pocetak,*kraj; }; void InitQ(tred *red) { tred *pom = new tred; pom->next=NULL; red->pocetak=pom; red->kraj=pom; } void DequeueQ(tred *red) { tred *pom; if (red->pocetak==red->kraj) exit(0); else { pom=red->pocetak; red->pocetak=(red->pocetak)->next; free(pom); } } void EnqueueQ( tipUnosa ulaz,tred *red) { tred *pom =new tred; pom->next=NULL; pom->vrjednost=ulaz; (red->kraj)->next=pom; red->kraj=pom; } tipUnosa FrontQ(tred *red) { if (red->pocetak==red->kraj) exit(0); else return(((red->pocetak)->next)->vrjednost); } bool IsEmptyQ(tred *red){ if (red->pocetak==red->kraj) return true; else return false; } // main.program #include <iostream> #include <cstdlib> #include "RedPol.h" //#inlcude "RedPok.h" using namespace std; int broj_k=0; void unos_klijenata(tred *red); void propustanje_starijih(tred *red); void ispis(tnovi klijent); void stanje_reda(tred *red); void eliminacija(tred *red); void otvaranje_saltera(tred *red); int main(){ int unos; tred *red = new tred; InitQ(red); do{ cout << "\n\t#------------- IZBORNIK ---------------#"; cout << "\n\t|\t1. Ulazak u banku |"; cout << "\n\t|\t2. Izbaci nepogodne za kredit |"; cout << "\n\t|\t3. Otvori novi salter |"; cout << "\n\t|\t0. Izlaz iz programa |"; cout << "\n\t#--------------------------------------#"; cout << "\n\t\t\tVas izbor: "; cin >> unos; switch(unos){ case 1: cout <<"\n#------------- Ulazak ---------------#\n"; unos_klijenata(red); propustanje_starijih(red); stanje_reda(red); break; case 2: eliminacija(red); stanje_reda(red); break; case 3: otvaranje_saltera(red); propustanje_starijih(red); stanje_reda(red); break; case 0: break; default: cout << "\nPogresan unos!!\n"; } }while(unos != 0); return 0; }; void ispis(tnovi klijent){ cout <<"Ime klijenta : "<<klijent.ime<<endl; cout <<"Prezime klijenta : "<<klijent.prezime<<endl; cout <<"Godina rodenja : "<<klijent.godina<<endl; cout <<"Stanje racuna : "<<klijent.stanje<<endl; cout <<"Vrsta transakcije : \n\t\t"<<klijent.izbor<<endl; cout <<"#------------------------------------#\n"; } void stanje_reda(tred *red){ cout <<"\n#------------ Stanje reda -----------#\n"; for (int i=0;i<broj_k;i++){ ispis(FrontQ(red)); EnqueueQ(FrontQ(red),red); DequeueQ(red); } } void otvaranje_saltera(tred *red){ tnovi klijent; if (!IsEmptyQ(red)){ klijent = FrontQ(red); DequeueQ(red); otvaranje_saltera(red); } else return; EnqueueQ(klijent,red); } void eliminacija(tred *red){ tnovi klijent; int br=0; cout <<"\n#------------ Eliminacija -----------#\n"; for (int i=0;i<broj_k;i++){ klijent = FrontQ(red); if (klijent.stanje<100 && !strcmp(klijent.izbor,"Kreditiranje")){ ispis(klijent); br--; } else EnqueueQ(klijent,red); DequeueQ(red); } broj_k+=br; } void propustanje_starijih(tred *red){ tred *p_red = new tred; InitQ(p_red); for (int i=0;i<broj_k;i++){ if (FrontQ(red).godina<1945){ EnqueueQ(FrontQ(red),red); } else{ EnqueueQ(FrontQ(red),p_red); } DequeueQ(red); } while (!IsEmptyQ(p_red)){ EnqueueQ(FrontQ(p_red),red); DequeueQ(p_red) ; } }; void unos_klijenata(tred *red){ tnovi klijent; int iz,k; cout <<"Koliko klijenata ulazi : "; cin >> k; for (int i=0;i<k;i++){ cout <<"Unesite ime : "; cin.ignore(); cin.getline(klijent.ime,14); cout <<"Unesite preime : "; cin.getline(klijent.prezime,14); cout <<"Unesite stanje racuna : "; cin >> klijent.stanje; cout <<"Unesite godine : "; cin >> klijent.godina; do{ cout <<"Tip transakcije : \n\t1. Uplata/Isplata\n\t2. Kreditiranje\n\t3. Placanja\nIzbor : "; cin >> iz ; if (iz==1) strcpy(klijent.izbor,"Uplata/Isplata"); else if (iz==2) strcpy(klijent.izbor,"Kreditiranje"); else if (iz==3) strcpy(klijent.izbor,"Placanja"); else cout <<"\nNepostojeca opcija!!\n"; }while (iz != 1 && iz != 2 && iz != 3); EnqueueQ(klijent,red); broj_k++; cout <<"#------------------------------------#\n"; } }
Initial URL
Initial Description
Initial Title
Zadatak iz Struktura podataka
Initial Tags
podataka
Initial Language
C++