Revision: 36469
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
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++