Posted By

dekisanta on 11/22/10


Tagged

red Queue


Versions (?)

Glavni program (red)


 / Published in: C++
 

URL: dekisanta_Z3_1

  1. struct tdata{
  2. char ime[15];
  3. char prezime[15];
  4. int god;
  5. float stanje;
  6. int trans;
  7. };
  8. //#include "red_polje.h"
  9. #include "red_pokazivac.h"
  10. #include <iostream>
  11. #include <iomanip>
  12. int br = 0;
  13. tdata zapis;
  14.  
  15. void izbornik(){
  16. cout << "\n---Izbornik---\n\n";
  17. cout << "1. Dodavanje zapisa o klijentima banke u red" << endl;
  18. cout << "2. Izbacivanje kreditno nesposobnih klijenata iz reda" << endl;
  19. cout << "3. Simulacija zatvaranja jednog i otvaranja drugog saltera" << endl;
  20. cout << "9. Kraj programa" << endl;
  21. cout << "Vas izbor:";
  22. }
  23.  
  24. void unos(tred *Q){
  25. cout << "\n---Unos---\n\n";
  26. cout << "Ime klijenta: ";
  27. cin >> zapis.ime;
  28. cout << "Prezime klijenta: ";
  29. cin >> zapis.prezime;
  30. do{
  31. cout << "Godina rodjenja klijenta: ";
  32. cin >> zapis.god;
  33. if(zapis.god < 1900 || zapis.god > 2000) cout << "Krivi unos!" << endl;
  34. }while(zapis.god < 1900 || zapis.god > 2000);
  35. cout << "Stanje na racunu klijenta: ";
  36. cin >> zapis.stanje;
  37. do{
  38. cout << "Unesite vrstu transakcije:\n(1 = uplata/isplata, 2 = placanje racuna, 3 = krediti): ";
  39. cin >> zapis.trans;
  40. if(zapis.trans < 1 || zapis.trans > 3) cout << "Krivi unos." << endl;
  41. }while(zapis.trans < 1 || zapis.trans > 3);
  42.  
  43. EnQueueQ(zapis, Q);
  44. br++;
  45. }
  46.  
  47. void premjestaj(tred *Q){
  48. tred pomocni;
  49. InitQ(&pomocni);
  50. int br2 = 0;
  51.  
  52. for(int i=0; i<br; i++){
  53. zapis = FrontQ(Q);
  54. if(zapis.god > 1945){//premjestaj u pomocni red
  55. EnQueueQ(zapis, &pomocni);
  56. DeQueueQ(Q);
  57. br2++;
  58. }
  59. else{
  60. EnQueueQ(zapis, Q);//premjestaj god>65 na kraj reda
  61. DeQueueQ(Q);
  62. }
  63. }//for
  64. for(int i=0; i<br2; i++){//vracanje u originalni red
  65. zapis = FrontQ(&pomocni);
  66. DeQueueQ(&pomocni);
  67. EnQueueQ(zapis, Q);
  68. }
  69. }
  70.  
  71. void ispis(tred *Q){
  72. if(IsEmptyQ(Q)) cout << "Red je prazan." << endl;
  73. else{
  74. cout << "\n---Ispis---\n\n";
  75. for(int i=0; i<br; i++){
  76. zapis = FrontQ(Q);
  77. cout << "----------------------------" << endl;
  78. cout << "Ime klijenta: " << zapis.ime << endl;
  79. cout << "Prezime klijenta. " << zapis.prezime << endl;
  80. cout << "Godina rodjenja klijenta: " << zapis.god << endl;
  81. cout << "Stanje na racunu: " << setprecision(2) << fixed << zapis.stanje << endl;
  82. cout << "Vrsta transakcije: ";
  83. if(zapis.trans == 1) cout << "uplata/isplata" << endl;
  84. else if(zapis.trans == 2) cout << "placanje racuna" << endl;
  85. else cout << "krediti" << endl;
  86. cout << "----------------------------" << endl;
  87.  
  88. DeQueueQ(Q);
  89. EnQueueQ(zapis, Q);
  90. }//for
  91. }//else
  92. }
  93.  
  94. void izbacivanje(tred *Q){
  95. int br2 = 0;
  96. if(IsEmptyQ(Q)) cout << endl;
  97. else{
  98. for(int i=0; i<br; i++){
  99. zapis = FrontQ(Q);
  100. if(zapis.trans == 3 && zapis.stanje < 100){
  101. DeQueueQ(Q);
  102. br2++;
  103. }
  104. else{
  105. DeQueueQ(Q);
  106. EnQueueQ(zapis, Q);//premjestaj na kraj reda
  107. }
  108. }//for
  109. }//else
  110. br -= br2;
  111. }
  112.  
  113. void simulacija(tred *Q){
  114. if(!IsEmptyQ(Q)){
  115. tdata holder = FrontQ(Q);
  116. DeQueueQ(Q);
  117. simulacija(Q);
  118. EnQueueQ(holder, Q);
  119. }
  120. }
  121.  
  122. int main(){
  123. tred Q;
  124. InitQ(&Q);
  125. int izbor;
  126. char jos;
  127.  
  128. do{
  129. izbornik();
  130. cin >> izbor;
  131. switch(izbor){
  132. case 1:
  133. do{
  134. unos(&Q);
  135. cout << "\nJos (d/n): ";
  136. cin >> jos;
  137. }while(jos == 'd' || jos == 'D');
  138. premjestaj(&Q);
  139. ispis(&Q);
  140. break;
  141.  
  142. case 2:
  143. izbacivanje(&Q);
  144. ispis(&Q);
  145. break;
  146.  
  147. case 3:
  148. simulacija(&Q);
  149. ispis(&Q);
  150. break;
  151.  
  152. case 9:
  153. cout << "Kraj programa." << endl;
  154. break;
  155.  
  156. default:
  157. cout << "Krivi unos!" << endl;
  158. }//switch
  159. }while(izbor != 9);
  160. cout << "Pritisnite ENTER za nastavak...";
  161. cin.ignore();
  162. cin.get();
  163. return 0;
  164. }

Report this snippet  

Comments

RSS Icon Subscribe to comments
Posted By: Vanny9 on November 22, 2010

Tvoja rekurzivna funkcija je napravljena na drugačiji način od moje, kao i funkcija za izbacivanje iz reda.

You need to login to post a comment.