Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.20 KB | None | 0 0
  1. // Egzamin, termin II.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include<iostream>
  6. #include<string>
  7. #include<cstdlib>
  8. #include<time.h>
  9.  
  10. using namespace std;
  11.  
  12. struct DATA {//format zapisu daty dla drzewa binarnego
  13. int r; int m; int d;
  14. };
  15.  
  16. struct L_TRANSAKCJA {
  17. int ID_klienta;
  18. double kwota_tr;
  19. L_TRANSAKCJA* next;
  20. L_TRANSAKCJA* prev;
  21. };
  22.  
  23. struct D_DATA {
  24. DATA *wskaznik;
  25. D_DATA *prawy_k;
  26. D_DATA *lewy_k;
  27. L_TRANSAKCJA* head;
  28. };
  29.  
  30. int porownywanie_dat(DATA *data, DATA* data_s)
  31. {
  32. if (data->r == data_s->r && data->m == data_s->m && data->d == data_s->d)
  33. {
  34. return 0;
  35. }
  36. else if (data->r > data_s->r || data->m > data_s->m || data->d > data_s->d)
  37. {
  38. return -1;
  39. }
  40. else
  41. return 1;
  42. }
  43.  
  44. D_DATA * szukaj(DATA *data, D_DATA * korzen)
  45. {
  46. D_DATA * temp;
  47. temp = korzen;
  48. if (korzen == NULL)
  49. return NULL;
  50. else if (korzen && porownywanie_dat(data, korzen->wskaznik) == 0) {
  51. return korzen;
  52. }
  53. if (korzen->lewy_k) {
  54. szukaj(data, korzen->lewy_k);
  55. }
  56. if (korzen->prawy_k)
  57. szukaj(data, korzen->prawy_k);
  58. else {
  59. cout << "nie ma podanej daty w bazie" << endl;
  60. return NULL;
  61. }
  62. }
  63.  
  64. void dodaj_l(L_TRANSAKCJA *&head, const int &id_klienta, const double &kwota)
  65. {
  66.  
  67. L_TRANSAKCJA * temp = new L_TRANSAKCJA{ id_klienta, kwota, nullptr, nullptr };
  68. if (head == NULL)
  69. {
  70. head = temp;
  71.  
  72. }
  73. else
  74. {
  75. head->prev = temp;
  76. temp->next = head;
  77.  
  78. head = temp;
  79. }
  80. }
  81. void dodaj(D_DATA *&head, DATA *wsk, DATA *wsk_2, L_TRANSAKCJA*& head_l)
  82. {
  83. D_DATA* temp = new D_DATA{ wsk, NULL, NULL, head_l };
  84. if (head == NULL) {
  85. head = temp;
  86. }
  87. else if (head->wskaznik->r < wsk_2->r)
  88. dodaj(head->prawy_k, wsk, wsk_2, head_l);
  89. else
  90. dodaj(head->lewy_k, wsk, wsk_2, head_l);
  91.  
  92. }
  93.  
  94. void wyswietl(D_DATA *&head)
  95. {
  96. if (head == NULL)
  97. return;
  98.  
  99. cout << head->wskaznik->d << "." << head->wskaznik->m << "." << head->wskaznik->r << endl;
  100.  
  101. wyswietl(head->lewy_k);
  102. wyswietl(head->prawy_k);
  103. }
  104.  
  105. void wyswietl(L_TRANSAKCJA *&head)
  106. {
  107. L_TRANSAKCJA * temp = head;
  108. while (temp)
  109. {
  110. cout <<"id klienta: "<< temp->ID_klienta << endl <<"kwota transakcji: "<< temp->kwota_tr << endl;
  111.  
  112. temp = temp->next;
  113. }
  114. }
  115.  
  116. int usun_transakcje(L_TRANSAKCJA*& head, int id_klienta)
  117. {
  118. L_TRANSAKCJA* temp = head;
  119. int suma = 0;
  120.  
  121. while (temp)
  122. {
  123. if (head->ID_klienta==id_klienta && temp->prev==NULL) {
  124. suma = suma+head->kwota_tr;
  125. temp = head->next;
  126. temp->prev = nullptr;
  127. delete head;
  128. head = temp;
  129.  
  130. }
  131. else if(temp->ID_klienta==id_klienta) {
  132. L_TRANSAKCJA *temp_n = temp->next;
  133. L_TRANSAKCJA *temp_n1 = temp->prev;
  134. suma = suma + temp->kwota_tr;
  135. delete temp;
  136. temp_n1->next = temp_n;
  137. temp_n->prev = temp_n1;
  138. temp = temp_n;
  139. }
  140. temp=temp->next;
  141. }
  142. return suma;
  143. }
  144. void wyswietl_l(L_TRANSAKCJA *& head)
  145. {
  146. L_TRANSAKCJA* temp = head;
  147. if (temp == NULL)
  148. return;
  149. else
  150. {
  151. while (temp)
  152. {
  153. cout << "id klienta: " << temp->ID_klienta << " " << "kwota transakcji: " << temp->kwota_tr << endl;
  154. temp = temp->next;
  155. }
  156. }
  157. }
  158.  
  159.  
  160. void USUN_TRANSAKCJE_KLIENTA(DATA *&data, int& id_klienta, D_DATA *&head) {
  161.  
  162. D_DATA * wsk = szukaj(data, head);
  163.  
  164.  
  165. usun_transakcje(wsk->head, id_klienta);
  166.  
  167.  
  168.  
  169.  
  170. }
  171. int main()
  172. {
  173. D_DATA* head = NULL;
  174. L_TRANSAKCJA* head2 = NULL;
  175. DATA* data = new DATA{ 12, 12, 2015 };
  176. DATA* data_1 = new DATA{ 03, 3, 1990 };
  177. DATA* data_2 = new DATA{ 13, 1, 1991 };
  178. DATA* data_3 = new DATA{ 15, 10, 1992 };
  179. DATA* data_4 = new DATA{ 29, 11, 1993 };
  180. DATA* data_5 = new DATA{ 30, 7, 1994 };
  181. DATA* data_6 = new DATA{ 31, 12, 1775 };
  182.  
  183. DATA* wsk_2 = new DATA{ 12, 3, 1993 };
  184.  
  185. srand(time(NULL));
  186.  
  187. dodaj_l(head2, 5, 32.34);
  188. dodaj_l(head2, 32, 32.34);
  189. dodaj_l(head2, 21, 56.32);
  190. dodaj_l(head2, 32, 97.34);
  191. dodaj_l(head2, 23, 150.93);
  192.  
  193. dodaj(head, data, wsk_2, head2);
  194. dodaj(head, data_1, wsk_2, head2);
  195. dodaj(head, data_2, wsk_2, head2);
  196. dodaj(head, data_3, wsk_2, head2);
  197. dodaj(head, data_4, wsk_2, head2);
  198. dodaj(head, data_5, wsk_2, head2);
  199. wyswietl(head);
  200. cout << szukaj(data_2, head)->wskaznik->d << endl;
  201.  
  202.  
  203.  
  204. cout << usun_transakcje(head2, 32) << endl;
  205. wyswietl_l(head2);
  206. system("pause");
  207. return 0;
  208. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement