Posted By

lumatijev on 11/22/10


Tagged

red sp pokazivac Strukture polje implementacija zadatak


Versions (?)

SP Zadatak 3


 / Published in: C++
 

  1. //red_polje.h
  2.  
  3. struct bankovni_klijenti{
  4. char imeprez[50];
  5. int godiste;
  6. int stanje;
  7. char trans;
  8. };
  9.  
  10. struct red{
  11. bankovni_klijenti e[10000];
  12. int p, z;
  13. };
  14.  
  15. typedef struct red queue;
  16. typedef struct bankovni_klijenti element;
  17.  
  18. red* InitQ(red *Q){
  19. Q = new red;
  20. Q -> p = 0;
  21. Q -> z = 9999;
  22. return Q;
  23. }
  24.  
  25. int AddOne(int n)
  26. {
  27. return ((n+1)%10000);
  28. }
  29.  
  30. element FrontQ(red *Q)
  31. {
  32. return Q -> e[Q -> p];
  33. }
  34.  
  35. void EnQueueQ(element x, red *Q)
  36. {
  37. Q -> z = AddOne(Q -> z);
  38. Q -> e[Q -> z] = x;
  39. }
  40.  
  41. void DeQueueQ(red *Q)
  42. {
  43. Q -> p = AddOne(Q -> p);
  44. }
  45.  
  46. bool IsEmptyQ(red *Q)
  47. {
  48. if(AddOne(Q -> z) == Q -> p)
  49. return true;
  50. return false;
  51. }
  52.  
  53. //red_pokazivac.h
  54.  
  55. struct bankovni_klijenti
  56. {
  57. char imeprez[50];
  58. int godiste;
  59. int stanje;
  60. char trans;
  61. };
  62.  
  63. struct elem
  64. {
  65. bankovni_klijenti e;
  66. elem *s;
  67. };
  68.  
  69. struct red
  70. {
  71. elem *p,*z;
  72. };
  73.  
  74. typedef struct bankovni_klijenti element;
  75. typedef struct red queue;
  76.  
  77. red* InitQ(red *Q)
  78. {
  79. elem *novi = new elem;
  80. Q = new red;
  81. novi -> s = NULL;
  82. Q -> z = novi;
  83. Q -> p = novi;
  84. return Q;
  85. }
  86.  
  87. bankovni_klijenti FrontQ(red *Q)
  88. {
  89. return Q -> p -> s -> e;
  90. }
  91.  
  92. void EnQueueQ(element x, red *Q)
  93. {
  94. elem *novi = new elem;
  95. novi -> e = x;
  96. novi -> s = NULL;
  97. Q -> z -> s = novi;
  98. Q -> z = novi;
  99. }
  100.  
  101. void DeQueueQ(red *Q)
  102. {
  103. elem *brisi = Q -> p;
  104. Q -> p = brisi -> s;
  105. delete brisi;
  106. }
  107.  
  108. bool IsEmptyQ(red *Q)
  109. {
  110. if(Q -> z == Q -> p)
  111. return true;
  112. return false;
  113. }
  114.  
  115. //banka.cpp
  116.  
  117. #include<iostream>
  118. #include "red_polje.h"
  119. //#include "red_pokazivac.h"
  120. using namespace std;
  121.  
  122. int brojac = 0;
  123.  
  124. void ispis(red *Q)
  125. {
  126. bankovni_klijenti novi;
  127. int broj = brojac;
  128. while(broj)
  129. {
  130. novi = FrontQ(Q);
  131. DeQueueQ(Q);
  132. cout << "Ime i prezime klijenta: " << novi.imeprez << endl;
  133. cout << "Godina rodjenja: " << novi.godiste << endl;
  134. cout << "Stanje na racunu (u, i, p, k): " << novi.stanje << endl;
  135. if(novi.trans == 'u' || novi.trans == 'i')
  136. cout << "Vrsta transakcije: uplata/isplata." << endl;
  137. if(novi.trans == 'p')
  138. cout << "Vrsta transakcije: placanje racuna." << endl;
  139. if(novi.trans == 'k')
  140. cout << "Vrsta transakcije: kreditiranje." << endl;
  141. cout << "------------------------------" << endl;
  142. EnQueueQ(novi,Q);
  143. broj--;
  144. }
  145. }
  146.  
  147. void dodavanje_klijenata(red *Q)
  148. {
  149. bankovni_klijenti novi;
  150. cout << "Ime i prezime klijenta: ";
  151. cin.ignore();
  152. cin.getline(novi.imeprez, 50);
  153. cout << "Godina rodjenja: ";
  154. cin >> novi.godiste;
  155. cout << "Stanje racuna: ";
  156. cin >> novi.stanje;
  157. cout << "Vrsta transakcije: (u, i, p, k): " << endl;
  158. cout << "Vas izbor: ";
  159. do
  160. {
  161. cin >> novi.trans;
  162. if((novi.trans != 'u') && (novi.trans != 'i') && (novi.trans != 'p') && (novi.trans != 'k'))
  163. cout << "Pogresan unos." << endl;
  164. }while((novi.trans != 'u') && (novi.trans != 'i') && (novi.trans != 'p') && (novi.trans != 'k'));
  165. EnQueueQ(novi, Q);
  166. cout << "----------------------------------" << endl << endl;
  167. brojac++;
  168. }
  169.  
  170. void stariji(red *Q)
  171. {
  172. red *pomocni = InitQ(pomocni);
  173. bankovni_klijenti novi;
  174. int broj = brojac;
  175. while(broj)
  176. {
  177. novi = FrontQ(Q);
  178. DeQueueQ(Q);
  179. if(novi.godiste > 1945)
  180. EnQueueQ(novi,pomocni);
  181. else
  182. EnQueueQ(novi,Q);
  183. broj--;
  184. }
  185. while(!IsEmptyQ(pomocni))
  186. {
  187. novi = FrontQ(pomocni);
  188. DeQueueQ(pomocni);
  189. EnQueueQ(novi,Q);
  190. }
  191. ispis(Q);
  192. }
  193.  
  194. void sredstva(red *Q)
  195. {
  196. red *pomocni = InitQ(pomocni);
  197. bankovni_klijenti novi;
  198. int broj = brojac;
  199. while(broj)
  200. {
  201. novi = FrontQ(Q);
  202. DeQueueQ(Q);
  203. if(!(novi.stanje < 100 && novi.trans == 'k'))
  204. EnQueueQ(novi,Q);
  205. else
  206. brojac--;
  207. broj--;
  208. }
  209. ispis(Q);
  210. }
  211.  
  212. void salteri(red *Q)
  213. {
  214. bankovni_klijenti novi;
  215. novi = FrontQ(Q);
  216. DeQueueQ(Q);
  217. if(!IsEmptyQ(Q)) salteri(Q);
  218. EnQueueQ(novi,Q);
  219. }
  220.  
  221. int main()
  222. {
  223. bool ima = false;
  224. red *Q = InitQ(Q);
  225. int izbor;
  226. do
  227. {
  228. cout << "Izbornik: " << endl;
  229. cout << "1. Dodavanje klijenata banke u red." << endl;
  230. cout << "2. Pustanje starijih klijenata." << endl;
  231. cout << "3. Izbacivanje klijenata s manjkom sredstava." << endl;
  232. cout << "4. Otvaranje / zatvaranje saltera." << endl;
  233. cout << "9. Kraj programa." << endl;
  234. cout << "Vas izbor: ";
  235. cin >> izbor;
  236. switch(izbor)
  237. {
  238. case 1:
  239. system("cls");
  240. for(int i=0; i<15; i++)
  241. {
  242. cout << "Klijenata u redu: " << i << endl;
  243. cout << "U redu slobodno: " << 15-i << " mjesta." << endl << endl;
  244. dodavanje_klijenata(Q);
  245. }
  246. ima = true;
  247. break;
  248. case 2:
  249. system("cls");
  250. if(!ima)
  251. {
  252. cout << "Nema podataka o klijentima." << endl;
  253. break;
  254. }
  255. stariji(Q);
  256. break;
  257. case 3:
  258. system("cls");
  259. if(!ima)
  260. {
  261. cout << "Nema podataka o klijentima." << endl;
  262. break;
  263. }
  264. sredstva(Q);
  265. break;
  266. case 4:
  267. system("cls");
  268. if(!ima)
  269. {
  270. cout << "Nema podataka o klijentima." << endl;
  271. break;
  272. }
  273. salteri(Q);
  274. ispis(Q);
  275. break;
  276. case 9:
  277. break;
  278. }
  279. }while(izbor != 9);
  280. system("pause");
  281. }

Report this snippet  

You need to login to post a comment.