Posted By

hjurica on 11/22/10


Tagged

red sp jurica hlevnjak


Versions (?)

SP_Zadatak_3_red


 / Published in: C++
 

  1. // MAIN PROGRAM - BANKA
  2.  
  3. #include <iostream>
  4. #include <cstdlib>
  5.  
  6. #include "red_polje.h"
  7. //#include "red_pokazivac.h" // NE RADI!!!
  8.  
  9. using namespace std;
  10.  
  11. void dodaj_zapis (RED *Q) {
  12. klijent k;
  13. cout << "Ime i prezime: ";
  14. cin.ignore();
  15. cin.getline(k.ime,40);
  16. cout << "Godina rodjenja: ";
  17. cin >> k.god;
  18. cout << "Stanje racuna (kn): ";
  19. cin >> k.stanje;
  20. cout << "Transakcija (uplata, isplata, placanje ili kredit): ";
  21. cin.ignore();
  22. cin.getline(k.trans,10);
  23. ENQUEUEQ (k, Q);
  24. }
  25.  
  26. void provjeri (RED *Q, RED *pom) {
  27. klijent k;
  28. RED *pomoc = new RED;
  29. INITQ (pomoc);
  30. while (! ISEMPTYQ (Q)) {
  31. k = FRONTQ (Q);
  32. if (k.god < 1945){
  33. ENQUEUEQ (k, pomoc);
  34. DEQUEUEQ (Q);
  35. }
  36. else {
  37. ENQUEUEQ(k, pom);
  38. DEQUEUEQ (Q);
  39. }
  40. }
  41.  
  42. while (! ISEMPTYQ (pomoc)){
  43. k = FRONTQ (pomoc);
  44. ENQUEUEQ (k, Q);
  45. DEQUEUEQ (pomoc);
  46. }
  47.  
  48. while (! ISEMPTYQ (pom)) {
  49. k = FRONTQ (pom);
  50. ENQUEUEQ (k, Q);
  51. DEQUEUEQ (pom);
  52. }
  53. cout << "Stanje u redu: " << endl;
  54. cout << "-------------------------------------" << endl;
  55. while (! ISEMPTYQ (Q)) {
  56. k = FRONTQ (Q);
  57. cout << "Ime i prezime: " << k.ime << endl;;
  58. cout << "Godina rodjenja: "<< k.god << endl;
  59. cout << "Stanje racuna (HRK): "<< k.stanje << endl;
  60. cout << "Vrsta transakcije: "<< k.trans << endl;
  61. cout << "---------------------------------------" << endl;
  62. ENQUEUEQ (k, pom);
  63. DEQUEUEQ (Q);
  64. };
  65. delete pomoc;
  66. }
  67.  
  68. void izbaci (RED *Q, RED *pom) {
  69. klijent k;
  70. while (! ISEMPTYQ (Q)) {
  71. k = FRONTQ (Q);
  72. if (k.stanje < 100 && (!(strcmp (k.trans, "kredit")))) {
  73. DEQUEUEQ (Q);
  74. }
  75. else {
  76. ENQUEUEQ (k, pom);
  77. DEQUEUEQ (Q);
  78. }
  79. }
  80.  
  81. cout << "Stanje u redu: " << endl;
  82. cout << "----------------------------" << endl;
  83. while (! ISEMPTYQ (pom)) {
  84. k = FRONTQ (pom);
  85. cout << "Ime i prezime: " << k.ime << endl;;
  86. cout << "Godina rodjenja: "<< k.god << endl;
  87. cout << "Stanje racuna (HRK): "<< k.stanje << endl;
  88. cout << "Vrsta transakcije: "<< k.trans << endl;
  89. cout << "---------------------------------------" << endl;
  90. ENQUEUEQ (k, Q);
  91. DEQUEUEQ (pom);
  92. };
  93. }
  94.  
  95. void simuliraj (RED *Q) {
  96. klijent k;
  97. k = FRONTQ (Q);
  98. DEQUEUEQ (Q);
  99. if (! ISEMPTYQ (Q)) simuliraj (Q);
  100. ENQUEUEQ (k, Q);
  101.  
  102. RED *pom = INITQ (pom);
  103. while (! ISEMPTYQ (Q)) {
  104. k = FRONTQ (Q);
  105. cout << "Ime i prezime: " << k.ime << endl;;
  106. cout << "Godina rodjenja: "<< k.god << endl;
  107. cout << "Stanje racuna (HRK): "<< k.stanje << endl;
  108. cout << "Vrsta transakcije: "<< k.trans << endl;
  109. cout << "---------------------------------------" << endl;
  110. ENQUEUEQ (k, pom);
  111. DEQUEUEQ (Q);
  112. };
  113. }
  114.  
  115.  
  116. int main () {
  117. RED *Q = INITQ (Q);
  118. RED *pom = INITQ (pom);
  119.  
  120. int izbor;
  121.  
  122. do {
  123. cout << "\nIZBORNIK" << endl;
  124. cout << "====================================================" << endl;
  125. cout << "1. Dodavanje zapisa o klijentima." << endl;
  126. cout << "2. Pusti starije od 65 na pocetak reda." << endl;
  127. cout << "3. Izbaci iz reda klijente sa stanjem ispod 100 kn." << endl;
  128. cout << "4. Simuliraj zatvaranje saltera i otvaranje novog." << endl;
  129. cout << "0. Izlaz iz programa!" << endl;
  130. cout << "====================================================" << endl;
  131. do {
  132. cout << "IZBOR: ";
  133. cin >> izbor;
  134. cout << endl;
  135. } while (izbor < 0 || izbor > 4);
  136. switch (izbor) {
  137. case 1:
  138. dodaj_zapis (Q);
  139. break;
  140. case 2:
  141. provjeri (Q, pom);
  142. break;
  143. case 3:
  144. izbaci (Q, pom);
  145. break;
  146. case 4:
  147. cout << "Stanje u redu: " << endl;
  148. cout << "----------------------------" << endl;
  149. simuliraj (Q);
  150. break;
  151. }
  152. } while (izbor != 0);
  153.  
  154. return 0;
  155. }
  156.  
  157.  
  158.  
  159. // IMPLEMENTACIJA REDA POMOCU POLJA
  160.  
  161. #include <iostream>
  162. #include <cstdlib>
  163. using namespace std;
  164.  
  165. struct klijent {
  166. char ime [40];
  167. int god;
  168. float stanje;
  169. char trans [10];
  170. };
  171.  
  172. struct RED {
  173. klijent zapis [1000];
  174. int front;
  175. int rear;
  176. } Q;
  177.  
  178.  
  179.  
  180. int ADDONE(int n) {
  181. return((n+1)%1000);
  182. }
  183.  
  184.  
  185. bool ISEMPTYQ (RED *Q) {
  186. if (ADDONE (Q->rear) == Q->front) return 1;
  187. else return 0;
  188. }
  189.  
  190. klijent FRONTQ (RED *Q) {
  191. if (ISEMPTYQ (Q)) cout << "Red je prazan!" << endl;
  192. else {
  193. return (Q->zapis [Q->front]);
  194. }
  195. }
  196.  
  197. klijent ENQUEUEQ (klijent x, RED *Q) {
  198. if (ADDONE(ADDONE(Q->rear)) == (Q->front)) cout << "Red je pun!" << endl;
  199. else {
  200. Q->rear = ADDONE(Q->rear);
  201. Q->zapis [Q->rear] = x;
  202. }
  203. }
  204.  
  205. void DEQUEUEQ (RED *Q) {
  206. if (ISEMPTYQ (Q)) cout << "Red je prazan!" << endl;
  207. else Q->front = ADDONE(Q->front);
  208. }
  209.  
  210. RED* INITQ (RED *Q) {
  211. Q = new RED;
  212. Q->front = 0;
  213. Q->rear = 999;
  214. return Q;
  215. }
  216.  
  217.  
  218.  
  219.  
  220. // IMPLEMENTACIJA REDA POMOCU POKAZIVACA
  221.  
  222. #include <iostream>
  223. #include <cstdlib>
  224. using namespace std;
  225.  
  226. struct klijent {
  227. char ime [40];
  228. int god;
  229. float stanje;
  230. char trans [10];
  231. };
  232.  
  233. struct tzapis {
  234. klijent zapis;
  235. tzapis *sljedeci;
  236. };
  237.  
  238.  
  239. struct RED {
  240. tzapis *front, *rear;
  241. } Q;
  242.  
  243.  
  244. bool ISEMPTYQ (RED *Q) {
  245. if (Q->front == Q->rear) return 1;
  246. else return 0;
  247. }
  248.  
  249. klijent FRONTQ (RED *Q) {
  250. if (ISEMPTYQ (Q)) cout << "Red je prazan!" << endl;
  251. else return Q->front->sljedeci->zapis;
  252. }
  253.  
  254. klijent ENQUEUEQ (klijent x, RED *Q) {
  255. tzapis *novi = new tzapis;
  256. Q->rear->sljedeci = novi;
  257. Q->rear = Q->rear->sljedeci;
  258. Q->rear->zapis = x;
  259. Q->rear->sljedeci = 0;
  260. }
  261.  
  262. void DEQUEUEQ (RED *Q) {
  263. tzapis *pom;
  264. if (ISEMPTYQ (Q)) cout << "Red je prazan!" << endl;
  265. else {
  266. pom = Q->front;
  267. Q->front = Q->front->sljedeci;
  268. delete pom;
  269. }
  270. }
  271.  
  272. RED* INITQ (RED *Q) {
  273. Q = new RED;
  274. Q->front = 0;
  275. Q->rear = 0;
  276. return Q;
  277. }

Report this snippet  

You need to login to post a comment.