Advertisement
Guest User

asdasdxd

a guest
Dec 9th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. #include "std_lib_facilities.h"
  2.  
  3. struct elem {
  4. int adat;
  5. elem* bal;
  6. elem* jobb;
  7.  
  8. elem() {
  9. adat = -1;
  10. jobb = 0;
  11. bal = 0;
  12. }
  13.  
  14. elem(int a) {
  15. adat = a;
  16. jobb = 0;
  17. bal = 0;
  18. }
  19. };
  20.  
  21. int agszam(elem* e, elem* gyoker){
  22. if (e == 0) {
  23. return 0;
  24. }
  25. if (e->jobb == 0 && e->bal == 0) {
  26. if (e != gyoker) return 1; else return 0;
  27. }
  28. int josz = agszam(e->jobb, gyoker);
  29. int bosz = agszam(e->bal, gyoker);
  30. return josz + bosz;
  31. }
  32.  
  33. void aghossz(elem* e, elem* gyoker, int hossz, vector<int> &v) {
  34. if (e == 0) {
  35. return;
  36. }
  37. if (e->jobb == 0 && e->bal == 0) {
  38. if (e != gyoker) {
  39. v.push_back(hossz);
  40. } else {
  41. }
  42. }
  43. aghossz(e->jobb, gyoker, hossz + 1, v);
  44. aghossz(e->bal, gyoker, hossz + 1, v);
  45. }
  46.  
  47. int elemszam(elem* e, elem* gyoker) {
  48. if (e == 0) {
  49. return 0;
  50. }
  51. if (e->jobb == 0 && e->bal == 0) {
  52. if (e != gyoker) return 1; else return 0;
  53. }
  54. int josz = elemszam(e->jobb, gyoker);
  55. int bosz = elemszam(e->bal, gyoker);
  56. if (e == gyoker) {
  57. return josz + bosz;
  58. }
  59. return josz + bosz + 1;
  60. }
  61.  
  62. int elemertek(elem* e, elem* gyoker) {
  63. if (e == 0) {
  64. return 0;
  65. }
  66. if (e->jobb == 0 && e->bal == 0 && e->adat == 1) {
  67. return 1;
  68. }
  69. int josz = elemertek(e->jobb, gyoker);
  70. int bosz = elemertek(e->bal, gyoker);
  71. if (e == gyoker || e->adat == 0) {
  72. return josz + bosz;
  73. }
  74. return josz + bosz + 1;
  75. }
  76.  
  77. void agak(elem* e, elem* gyoker, string ag, vector<string>& v) {
  78. if (e == 0) {
  79. return;
  80. }
  81. if (e->jobb == 0 && e->bal == 0) {
  82. if (e != gyoker) {
  83. v.push_back(ag);
  84. }
  85. }
  86. agak(e->bal, gyoker, ag + "0", v);
  87. agak(e->jobb, gyoker, ag + "1", v);
  88. }
  89.  
  90. int main()
  91. {
  92. elem* gyoker = new elem();
  93.  
  94. elem* akt = gyoker;
  95. string be;
  96. int a;
  97. // 0 vagy 1
  98.  
  99. string input;
  100.  
  101. while (cin >> be) {
  102. input += be;
  103. }
  104. for (int i = 0; i < input.length(); i++)
  105. {
  106. a = input[i] - '0';
  107. if (a == 0) {
  108. if (akt->bal != 0) {
  109. akt = akt->bal;
  110. }
  111. else {
  112. elem* uj = new elem(a);
  113. akt->bal = uj;
  114. akt = gyoker;
  115. }
  116. }
  117. if (a == 1) {
  118. if (akt->jobb != 0) {
  119. akt = akt->jobb;
  120. }
  121. else {
  122. elem* uj = new elem(a);
  123. akt->jobb = uj;
  124. akt = gyoker;
  125. }
  126. }
  127. }
  128.  
  129. if(input.length()<=1000){
  130. cout << "input: " << endl;
  131. for (int i = 1; i <= input.length(); i++){
  132. cout << input[i-1];
  133.  
  134. if (i % 60 == 0) {
  135. cout << endl;
  136. }
  137. }
  138. }
  139.  
  140. int asz = agszam(gyoker, gyoker);
  141. cout << endl << "Agak szama: " << asz << endl;
  142.  
  143. vector<int> hosszak;
  144. aghossz(gyoker, gyoker, 0, hosszak);
  145. int sum = 0;
  146. int maxhossz = 0;
  147. for (int i : hosszak) {
  148. sum += i;
  149. if (maxhossz < i) maxhossz = i;
  150. }
  151.  
  152. double atlag = asz != 0 ? (double)sum / asz : 0;
  153. cout << "Agak atlagos hossza: " << atlag << endl;
  154.  
  155. double sum2=0;
  156. for (int i : hosszak) {
  157. sum2 += ((i-atlag)*(i-atlag));
  158. }
  159. cout << "Tapasztalati szoras: " << sqrt(asz != 0 ? sum2 / asz :0) << endl;
  160.  
  161. cout << "Korrigalt szoras: " << sqrt(asz != 0 ? sum2 / (asz-1) :0) << endl;
  162.  
  163. int esz = elemszam(gyoker, gyoker);
  164. cout << "Elemszam: " << esz << endl;
  165.  
  166. cout << "Magassag: " << maxhossz << endl;
  167.  
  168. int ee = elemertek(gyoker, gyoker);
  169. cout << "Atlag: " << (esz != 0 ? (double)ee/esz : 0) << endl;
  170.  
  171. vector<string> agakvector;
  172. agak(gyoker, gyoker, "", agakvector);
  173. if (asz <= 50) {
  174. cout << "A fa agai:" << endl;
  175. for (string s : agakvector) {
  176. cout << s << endl;
  177. }
  178. }
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement