Posted By

tosirovec on 11/21/10


Tagged

red Strukture podataka polje Cirkularno


Versions (?)

Zadatak iz Struktura podataka


 / Published in: C++
 

  1. // biblioteka.polje
  2.  
  3. struct tnovi{
  4. char ime[15],prezime[15],izbor[15];
  5. int godina, stanje;
  6. }; typedef tnovi tipUnosa;
  7.  
  8. struct tred {
  9. tipUnosa polje[1000];
  10. int pocetak,kraj;
  11. };
  12.  
  13. void InitQ(tred *red) {
  14. red->pocetak=0;
  15. red->kraj=999;
  16.  
  17. }
  18.  
  19. int AddOne(int n) {
  20. return((n+1)%1000);
  21. }
  22.  
  23. void EnqueueQ(tipUnosa ulaz,tred *red) {
  24. if (AddOne(AddOne(red->kraj))==red->pocetak) exit(0);
  25. else {
  26. red->kraj=AddOne(red->kraj);
  27. red->polje[red->kraj]=ulaz;
  28. }
  29. }
  30.  
  31. tipUnosa FrontQ(tred *red) {
  32. if (AddOne(red->kraj)==red->pocetak) exit(0);
  33. else return(red->polje[red->pocetak]);
  34. }
  35.  
  36. void DequeueQ(tred *red) {
  37. if (AddOne(red->kraj)==red->pocetak) exit(0);
  38. else red->pocetak=AddOne(red->pocetak);
  39. }
  40.  
  41. bool IsEmptyQ(tred *red) {
  42. if (AddOne(red->kraj)==red->pocetak) return true;
  43. else return false;
  44. }
  45.  
  46.  
  47.  
  48. // biblioteka.pokaziva─Ź
  49.  
  50. struct tnovi{
  51. char ime[15],prezime[15],izbor[15];
  52. int godina, stanje;
  53. }; typedef tnovi tipUnosa;
  54.  
  55.  
  56. struct tred {
  57. tipUnosa vrjednost;
  58. struct tred *next,*pocetak,*kraj;
  59. };
  60.  
  61. void InitQ(tred *red) {
  62. tred *pom = new tred;
  63. pom->next=NULL;
  64. red->pocetak=pom;
  65. red->kraj=pom;
  66. }
  67.  
  68. void DequeueQ(tred *red) {
  69. tred *pom;
  70. if (red->pocetak==red->kraj) exit(0);
  71. else {
  72. pom=red->pocetak;
  73. red->pocetak=(red->pocetak)->next;
  74. free(pom);
  75. }
  76. }
  77.  
  78. void EnqueueQ( tipUnosa ulaz,tred *red) {
  79. tred *pom =new tred;
  80. pom->next=NULL;
  81. pom->vrjednost=ulaz;
  82. (red->kraj)->next=pom;
  83. red->kraj=pom;
  84. }
  85.  
  86. tipUnosa FrontQ(tred *red) {
  87. if (red->pocetak==red->kraj) exit(0);
  88. else return(((red->pocetak)->next)->vrjednost);
  89. }
  90.  
  91. bool IsEmptyQ(tred *red){
  92. if (red->pocetak==red->kraj)
  93. return true;
  94. else
  95. return false;
  96. }
  97.  
  98.  
  99.  
  100. // main.program
  101.  
  102. #include <iostream>
  103. #include <cstdlib>
  104. #include "RedPol.h"
  105. //#inlcude "RedPok.h"
  106. using namespace std;
  107. int broj_k=0;
  108. void unos_klijenata(tred *red);
  109. void propustanje_starijih(tred *red);
  110. void ispis(tnovi klijent);
  111. void stanje_reda(tred *red);
  112. void eliminacija(tred *red);
  113. void otvaranje_saltera(tred *red);
  114.  
  115. int main(){
  116. int unos;
  117. tred *red = new tred;
  118. InitQ(red);
  119. do{
  120. cout << "\n\t#------------- IZBORNIK ---------------#";
  121. cout << "\n\t|\t1. Ulazak u banku |";
  122. cout << "\n\t|\t2. Izbaci nepogodne za kredit |";
  123. cout << "\n\t|\t3. Otvori novi salter |";
  124. cout << "\n\t|\t0. Izlaz iz programa |";
  125. cout << "\n\t#--------------------------------------#";
  126. cout << "\n\t\t\tVas izbor: ";
  127. cin >> unos;
  128. switch(unos){
  129. case 1:
  130. cout <<"\n#------------- Ulazak ---------------#\n";
  131. unos_klijenata(red);
  132. propustanje_starijih(red);
  133. stanje_reda(red);
  134. break;
  135. case 2:
  136. eliminacija(red);
  137. stanje_reda(red);
  138. break;
  139. case 3:
  140. otvaranje_saltera(red);
  141. propustanje_starijih(red);
  142. stanje_reda(red);
  143. break;
  144. case 0:
  145. break;
  146. default: cout << "\nPogresan unos!!\n";
  147. }
  148. }while(unos != 0);
  149. return 0;
  150. };
  151.  
  152. void ispis(tnovi klijent){
  153. cout <<"Ime klijenta : "<<klijent.ime<<endl;
  154. cout <<"Prezime klijenta : "<<klijent.prezime<<endl;
  155. cout <<"Godina rodenja : "<<klijent.godina<<endl;
  156. cout <<"Stanje racuna : "<<klijent.stanje<<endl;
  157. cout <<"Vrsta transakcije : \n\t\t"<<klijent.izbor<<endl;
  158. cout <<"#------------------------------------#\n";
  159. }
  160.  
  161. void stanje_reda(tred *red){
  162. cout <<"\n#------------ Stanje reda -----------#\n";
  163. for (int i=0;i<broj_k;i++){
  164. ispis(FrontQ(red));
  165. EnqueueQ(FrontQ(red),red);
  166. DequeueQ(red);
  167. }
  168. }
  169.  
  170. void otvaranje_saltera(tred *red){
  171. tnovi klijent;
  172. if (!IsEmptyQ(red)){
  173. klijent = FrontQ(red);
  174. DequeueQ(red);
  175. otvaranje_saltera(red);
  176. }
  177. else return;
  178. EnqueueQ(klijent,red);
  179. }
  180.  
  181. void eliminacija(tred *red){
  182. tnovi klijent;
  183. int br=0;
  184. cout <<"\n#------------ Eliminacija -----------#\n";
  185. for (int i=0;i<broj_k;i++){
  186. klijent = FrontQ(red);
  187. if (klijent.stanje<100 && !strcmp(klijent.izbor,"Kreditiranje")){
  188. ispis(klijent);
  189. br--;
  190. }
  191. else EnqueueQ(klijent,red);
  192. DequeueQ(red);
  193. }
  194. broj_k+=br;
  195. }
  196.  
  197. void propustanje_starijih(tred *red){
  198. tred *p_red = new tred;
  199. InitQ(p_red);
  200. for (int i=0;i<broj_k;i++){
  201. if (FrontQ(red).godina<1945){
  202. EnqueueQ(FrontQ(red),red);
  203. }
  204. else{
  205. EnqueueQ(FrontQ(red),p_red);
  206. }
  207. DequeueQ(red);
  208. }
  209. while (!IsEmptyQ(p_red)){
  210. EnqueueQ(FrontQ(p_red),red);
  211. DequeueQ(p_red) ;
  212. }
  213.  
  214. };
  215.  
  216. void unos_klijenata(tred *red){
  217. tnovi klijent;
  218. int iz,k;
  219. cout <<"Koliko klijenata ulazi : ";
  220. cin >> k;
  221. for (int i=0;i<k;i++){
  222. cout <<"Unesite ime : ";
  223. cin.ignore();
  224. cin.getline(klijent.ime,14);
  225. cout <<"Unesite preime : ";
  226. cin.getline(klijent.prezime,14);
  227. cout <<"Unesite stanje racuna : ";
  228. cin >> klijent.stanje;
  229. cout <<"Unesite godine : ";
  230. cin >> klijent.godina;
  231.  
  232. do{
  233. cout <<"Tip transakcije : \n\t1. Uplata/Isplata\n\t2. Kreditiranje\n\t3. Placanja\nIzbor : ";
  234. cin >> iz ;
  235. if (iz==1) strcpy(klijent.izbor,"Uplata/Isplata");
  236. else if (iz==2) strcpy(klijent.izbor,"Kreditiranje");
  237. else if (iz==3) strcpy(klijent.izbor,"Placanja");
  238. else cout <<"\nNepostojeca opcija!!\n";
  239. }while (iz != 1 && iz != 2 && iz != 3);
  240. EnqueueQ(klijent,red);
  241. broj_k++;
  242. cout <<"#------------------------------------#\n";
  243. }
  244. }

Report this snippet  

You need to login to post a comment.