zadatak 3 strukture podataka


/ Published in: C++
Save to your folder(s)



Copy this code and paste it in your HTML
  1. //pomocu pokazivaca//
  2. struct dio{
  3. element value;
  4. dio* next;
  5. };//dio
  6.  
  7. struct red_t{
  8. dio *front, *rear;
  9. };//red_t
  10.  
  11. typedef red_t red;
  12.  
  13. void InitQ(red* Q){
  14. Q->front=new dio;
  15. Q->rear=Q->front;
  16. }//InitQ
  17.  
  18. bool IsEmptyQ(red* Q){
  19. if(Q->rear==Q->front) return 1;
  20. return 0;
  21. }//IsEmptyQ
  22.  
  23. element FrontQ(red* Q){
  24. if(!IsEmptyQ(Q)) return Q->front->next->value;
  25. }//FrontQ
  26.  
  27. void EnQueueQ(element dodaj, red* Q){
  28. Q->rear->next=new dio;
  29. Q->rear=Q->rear->next;
  30. Q->rear->value=dodaj;
  31. }//EnQueueQ
  32.  
  33. void DeQueueQ(red* Q){
  34. dio* pomoc=Q->front;
  35. Q->front=Q->front->next;
  36. delete pomoc;
  37. }//DeQueueQ
  38.  
  39. void obrisi(red* Q){
  40. while(!IsEmptyQ(Q)) DeQueueQ(Q);
  41. delete Q->front;
  42. }//obrisi
  43.  
  44.  
  45. //pomocu polja//
  46. struct red_t{
  47. element elements[10000];
  48. int front,rear;
  49. };//red_t
  50.  
  51. typedef red_t red;
  52.  
  53. void InitQ(red* Q){
  54. Q->front=0;
  55. Q->rear=9999;
  56. }//InitQ
  57.  
  58. bool IsEmptyQ(red* Q){
  59. if( Q->front == (Q->rear+1)%10000 ) return 1;
  60. return 0;
  61. }//IsEmptyQ
  62.  
  63. element FrontQ(red* Q){
  64. if(!IsEmptyQ(Q)) return Q->elements[Q->front];
  65. }//FrontQ
  66.  
  67. void DeQueueQ(red* Q){
  68. if(!IsEmptyQ(Q)) Q->front++;
  69. }//DeQueueQ
  70.  
  71. void EnQueueQ(element dodaj, red* Q){
  72. Q->rear=(Q->rear+1)%10000;
  73. Q->elements[Q->rear]=dodaj;
  74. }//EnQueueQ
  75.  
  76. void obrisi(red* Q){}
  77.  
  78.  
  79. //PROGRAM//
  80. #include <iostream>
  81. #include <cstring>
  82. using namespace std;
  83.  
  84. struct klijent_t{
  85. string ime;
  86. int godina;
  87. double stanje;
  88. int transakcija;
  89. };//klijent_t
  90.  
  91. typedef klijent_t element;
  92.  
  93. #include "pomocu_pokazivaca.h"
  94. //include "pomocu_polja.h"
  95.  
  96. void dodajKlijenta(red*);
  97. void pustiStarije(red*);
  98. void ispisiStanje(red*);
  99. void rekurzija(red*);
  100. void makniNesposobne(red*);
  101. void otvoriSalter(red*);
  102.  
  103. int main(){
  104. int izbor=1;
  105. red mojred;
  106. InitQ(&mojred);
  107.  
  108. while(izbor){
  109. system("cls");
  110.  
  111. cout<<"1. Dodaj klijenta"<<endl
  112. <<"2. Pusti starije osobe na pocetak reda"<<endl
  113. <<"3. Makni iz reda kreditno nesposobne osobe"<<endl
  114. <<"4. Zatvaranje otvorenog i otvaranje novog saltera"<<endl
  115. <<"0. Izlaz iz programa"<<endl<<endl;
  116.  
  117. cout<<"Izbor: ";
  118. cin>>izbor;
  119.  
  120. switch(izbor){
  121. case 0: break;
  122.  
  123. case 1: system("cls");
  124. dodajKlijenta(&mojred);
  125. system("pause");
  126. break;
  127.  
  128. case 2: system("cls");
  129. pustiStarije(&mojred);
  130. cout<<"Svi klijenti stariji od 65 godina su pusteni na pocetak reda"<<endl<<endl;
  131. system("pause");
  132.  
  133. system("cls");
  134. ispisiStanje(&mojred);
  135. system("pause");
  136.  
  137. break;
  138.  
  139. case 3: system("cls");
  140. makniNesposobne(&mojred);
  141. cout<<"Svi kreditno nesposobni klijenti su izasli iz reda."<<endl<<endl;
  142. system("pause");
  143.  
  144. system("cls");
  145. ispisiStanje(&mojred);
  146. system("pause");
  147.  
  148. break;
  149.  
  150. case 4: system("cls");
  151.  
  152. if(IsEmptyQ(&mojred)) break;
  153.  
  154. otvoriSalter(&mojred);
  155. cout<<"Svi klijenti su u redu za novootvoreni salter."<<endl<<endl;
  156. system("pause");
  157.  
  158. system("cls");
  159. ispisiStanje(&mojred);
  160. system("pause");
  161.  
  162. break;
  163.  
  164. case 5: system("cls");
  165. ispisiStanje(&mojred);
  166. system("pause");
  167. break;
  168.  
  169. default: system("cls");
  170. cout<<"Neispravan unos."<<endl<<endl;
  171. system("pause");
  172. break;
  173. }//switch
  174. }//while
  175.  
  176. obrisi(&mojred);
  177. return 0;
  178. }//main
  179.  
  180. void dodajKlijenta(red* Q){
  181. element klijent;
  182.  
  183. cout<<"Unesi ime i prezime klijenta: ";
  184. cin.ignore();
  185. getline(cin,klijent.ime);
  186.  
  187. cout<<"Unesi godinu rodjenja klijenta: ";
  188. cin>>klijent.godina;
  189.  
  190. cout<<"Unesi stanje racuna klijenta: ";
  191. cin>>klijent.stanje;
  192.  
  193. cout<<"\nUnesi transakciju koju klijent zeli obaviti:"<<endl
  194. <<"1. uplata"<<endl
  195. <<"2. isplata"<<endl
  196. <<"3. placanje racuna"<<endl
  197. <<"4. dizanje kredita"<<endl<<endl;
  198.  
  199. cout<<"Transakcija: ";
  200. cin>>klijent.transakcija;
  201.  
  202. EnQueueQ(klijent,Q);
  203. }//dodajKlijenta
  204.  
  205. void pustiStarije(red* Q){
  206. if(IsEmptyQ(Q)) return;
  207.  
  208. red pomoc,stariji;
  209.  
  210. InitQ(&pomoc);
  211. InitQ(&stariji);
  212.  
  213. while(!IsEmptyQ(Q)){
  214. element provjeri=FrontQ(Q);
  215.  
  216. if(provjeri.godina>1945) EnQueueQ(provjeri,&pomoc);
  217. else EnQueueQ(provjeri,&stariji);
  218.  
  219. DeQueueQ(Q);
  220. }//while
  221.  
  222. while(!IsEmptyQ(&stariji)){
  223. EnQueueQ(FrontQ(&stariji),Q);
  224. DeQueueQ(&stariji);
  225. }//while
  226.  
  227. while(!IsEmptyQ(&pomoc)){
  228. EnQueueQ(FrontQ(&pomoc),Q);
  229. DeQueueQ(&pomoc);
  230. }//while
  231. }//pustiStarije
  232.  
  233. void ispisiStanje(red* Q){
  234. if(IsEmptyQ(Q)) return;
  235.  
  236. cout<<"Ime\t\tGodina\tStanje\tTransakcija"<<endl
  237. <<"============================================="<<endl;
  238.  
  239. rekurzija(Q);
  240. otvoriSalter(Q);
  241. }//ispisiStanje
  242.  
  243. void rekurzija(red* Q){
  244. element ispisi=FrontQ(Q);
  245.  
  246. cout<<ispisi.ime<<"\t"<<ispisi.godina<<"\t"<<ispisi.stanje<<"\t"<<ispisi.transakcija<<endl;
  247.  
  248. DeQueueQ(Q);
  249. if(!IsEmptyQ(Q)) rekurzija(Q);
  250. EnQueueQ(ispisi,Q);
  251. }//rekurzija
  252.  
  253. void makniNesposobne(red* Q){
  254. if(IsEmptyQ(Q)) return;
  255.  
  256. red pomoc;
  257. InitQ(&pomoc);
  258.  
  259. while(!IsEmptyQ(Q)){
  260. element citaj=FrontQ(Q);
  261. DeQueueQ(Q);
  262.  
  263. if(citaj.stanje<100 && citaj.transakcija==4) continue;
  264.  
  265. EnQueueQ(citaj,&pomoc);
  266. }//while
  267.  
  268. while(!IsEmptyQ(&pomoc)){
  269. EnQueueQ(FrontQ(&pomoc),Q);
  270. DeQueueQ(&pomoc);
  271. }//while
  272. }//makniNesposobne
  273.  
  274. void otvoriSalter(red* Q){
  275. element zapamti=FrontQ(Q);
  276. DeQueueQ(Q);
  277. if(!IsEmptyQ(Q)) otvoriSalter(Q);
  278. EnQueueQ(zapamti,Q);
  279. }//otvoriSalter

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.