Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.82 KB | None | 0 0
  1. // ConsoleApplication13.cpp : Ten plik zawiera funkcję „main”. W nim rozpoczyna się i kończy wykonywanie programu.
  2. //
  3.  
  4. #include "pch.h"
  5. #include <iostream>
  6. #include <cstdlib>
  7.  
  8. using namespace std;
  9.  
  10. class kulka
  11. {
  12. public:
  13. int wartosc;
  14. int numer;
  15. kulka *next = NULL;
  16. kulka *right = NULL;
  17. kulka *left = NULL;
  18.  
  19. kulka(int nr)
  20. {
  21. wartosc = rand() % 100;
  22. numer = nr;
  23. }
  24.  
  25. void lista(kulka *nowa)
  26. {
  27. if (next)
  28. {
  29. if (nowa->wartosc > next->wartosc)
  30. {
  31. nowa->next = next;
  32. next = nowa;
  33. }
  34. else
  35. next->lista(nowa);
  36. }
  37.  
  38. else
  39. next = nowa;
  40. }
  41.  
  42. void show_lista()
  43. {
  44. cout << "numer: " << numer << " " << wartosc << endl;
  45. if (next)
  46. next->show_lista();
  47. }
  48.  
  49. void show_lista_rosnaco()
  50. {
  51. if (next)
  52. next->show_lista_rosnaco();
  53. cout << "numer: " << numer << " " << wartosc << endl;
  54. }
  55.  
  56.  
  57. void drzewo(kulka *nowa)
  58. {
  59. if (nowa->wartosc < wartosc)
  60. {
  61. if (left)
  62. left->drzewo(nowa);
  63. else
  64. left = nowa;
  65. }
  66. else
  67. {
  68. if (right)
  69. right->drzewo(nowa);
  70. else
  71. right = nowa;
  72. }
  73. }
  74.  
  75. void show_drzewo()
  76. {
  77. if (left)
  78. left->show_drzewo();
  79. cout << "numer: " << numer << " " << wartosc << endl;
  80. if (right)
  81. right->show_drzewo();
  82. }
  83. int P(int &p)
  84. {
  85. if(wartosc % 3 == 0)
  86. p = p + 1;
  87. if (next)
  88. next->P(p);
  89.  
  90. return p;
  91. }
  92. int NP(int &p)
  93. {
  94. if (wartosc % 3 != 0)
  95. p = p + 1;
  96. if (next)
  97. next->NP(p);
  98.  
  99. return p;
  100. }
  101. int lel(int &i)
  102. {
  103. i = i + 1;
  104. if (next)
  105. next->lel(i);
  106.  
  107. return i;
  108. }
  109. };
  110. int main()
  111. {
  112. kulka *root_p = NULL;
  113. kulka *root_np = NULL;
  114. kulka *root = NULL;
  115.  
  116. for (int i = 0; i < 20; i++)
  117. {
  118. kulka *nowa = new kulka(i);
  119.  
  120. if (root == NULL)
  121. root = nowa;
  122.  
  123. else
  124. {
  125. if (nowa->wartosc > root->wartosc)
  126. {
  127. nowa->next = root;
  128. root = nowa;
  129. }
  130. else
  131. root->lista(nowa);
  132. }
  133. }
  134.  
  135.  
  136. cout << "cala lista malejaco" << endl;
  137. root->show_lista();
  138.  
  139. cout << endl;
  140.  
  141. cout << "cala lista rosnaco" << endl;
  142. root->show_lista_rosnaco();
  143.  
  144. cout << endl;
  145. int p = 0;
  146. int np = 0;
  147. root->P(p);
  148. root->NP(np);
  149. cout << "Licza elementow podzielnych przez 3: " << p << endl;
  150. cout << "Licza elementow niepodzielnych przez 3: " << np << endl << endl;
  151.  
  152. //dodawanie elementow do list: parzystej i nieparzystej
  153.  
  154. kulka *pom = root;
  155.  
  156. while (root->next)
  157. {
  158. pom = root;
  159. root = root->next;
  160. pom->next = NULL;
  161. if (pom->wartosc % 2 == 0)
  162. {
  163. if (root_p == NULL)
  164. root_p = pom;
  165. else
  166. root_p->lista(pom);
  167. }
  168. else
  169. {
  170. if (root_np == NULL)
  171. root_np = pom;
  172. else
  173. root_np->lista(pom);
  174. }
  175.  
  176. }
  177.  
  178. if (root->wartosc % 2 == 0)
  179. root_p->lista(root);
  180. else
  181. root_np->lista(root);
  182.  
  183. int P = 1;
  184. int NP = 1;
  185. root_p->lel(P);
  186. root_p->lel(NP);
  187.  
  188. //drzewo z listy parzystej
  189.  
  190. kulka *pom_drzewo1 = NULL;
  191. kulka *root_drzewo = NULL;
  192.  
  193. while (root_p->next)
  194. {
  195. pom_drzewo1 = root_p;
  196. root_p = root_p->next;
  197. pom_drzewo1->next = NULL;
  198. if (root_drzewo == NULL)
  199. root_drzewo = pom_drzewo1;
  200. else
  201. root_drzewo->drzewo(pom_drzewo1);
  202. }
  203.  
  204. if (root_p)
  205. root_drzewo->drzewo(root_p);
  206.  
  207. cout << "Drzewo parzyste" << endl;
  208. root_drzewo->show_drzewo();
  209.  
  210. cout << endl;
  211.  
  212. //drzewo z listy parzystej
  213.  
  214. kulka *pom_drzewo2 = NULL;
  215. kulka *root_drzewo2 = NULL;
  216.  
  217. while (root_np->next)
  218. {
  219. pom_drzewo2 = root_np;
  220. root_np = root_np->next;
  221. pom_drzewo2->next = NULL;
  222. if (root_drzewo2 == NULL)
  223. root_drzewo2 = pom_drzewo2;
  224. else
  225. root_drzewo2->drzewo(pom_drzewo2);
  226. }
  227.  
  228. if (root_np)
  229. root_drzewo->drzewo(root_np);
  230.  
  231. cout << "Drzewo nieparzyste" << endl;
  232. root_drzewo2->show_drzewo();
  233.  
  234. cout << endl;
  235.  
  236. cout << "Liczba elementów w drzewie parzystym : " << P << endl;
  237. cout << "Liczba elementów w drzewie nieparzystym : " << NP << endl;
  238.  
  239.  
  240.  
  241. return 0;
  242. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement