Guest User

Untitled

a guest
Oct 16th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.55 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <string>
  5. using namespace std;
  6.  
  7. struct Anketa {// создание списка
  8. int age;
  9. bool gender, question;
  10. int osvita;
  11. string name;
  12. Anketa *next;
  13. Anketa *prev;
  14. };
  15.  
  16. struct Node {
  17. Anketa *d;
  18. Node *left;
  19. Node *right;
  20. };
  21. void add_node(Node *root, Anketa *d);
  22. Node *first(Anketa *d);//формирование первого элемента дерева
  23. Node *search_Insert(Node *root, Anketa *d);//пошук з включенням
  24. void print_tree(Node *root, int l);//прямой обход и вывод дерева
  25.  
  26. int main()
  27. {
  28. int f_age, f_osv;
  29. bool f_gen, f_que;
  30. string f_name;
  31. cout << "Enter your name: ";
  32. cin >> f_name;
  33. cout << "Enter age: ";
  34. cin >> f_age;
  35. cout << "Enter gender(0 - woman, 1 - man): ";
  36. cin >> f_gen;
  37. cout << "Enter osvita(1-started, 2 - medium, 3 - high): ";
  38. cin >> f_osv;
  39. cout << "Enter first answear question(1-yes, 0 - no): ";
  40. cin >> f_que;
  41. Anketa *d=new Anketa;
  42. d->name=f_name;
  43. d->age = f_age;
  44. d->gender = f_gen;
  45. d->question = f_que;
  46. d->osvita = f_osv;
  47. Node *root = first(d);
  48. int wh = 0, sa = 0, sb = 0, sc = 0, k;
  49. if (d->age>40 && d->gender == 1 && d->osvita == 3)
  50. {
  51. if (d->question == 1)
  52. {
  53. sa++;
  54. }
  55. }
  56. if (d->age<30 && d->gender == 0 && d->osvita == 2)
  57. {
  58. if (d->question == 0)
  59. {
  60. sb++;
  61. }
  62. }
  63. if (d->age<25 && d->gender == 1 && d->osvita == 1)
  64. {
  65.  
  66. if (d->question == 1)
  67. {
  68. sc++;
  69. }
  70. }
  71.  
  72. while (1)
  73. {
  74. k = 0;
  75. cout << "\nEnter, what you want to do: " << endl;
  76. cout << "1 - enter new candidate;" << endl;
  77. cout << "2 - check list;" << endl;
  78. cout << "3 - check special info;" << endl;
  79. cout << "4 - exit the programm;" << endl;
  80. cin >> k;
  81. switch (k)
  82. {
  83. case 1:// добавление нового человека в опрос
  84. {
  85. cout << "\nEnter your name: ";
  86. cin >> f_name;
  87. cout << "Enter age: ";
  88. cin >> f_age;
  89. cout << "Enter gender(0 - woman, 1 - man): ";
  90. cin >> f_gen;
  91. cout << "Enter osvita(1-started, 2 - medium, 3 - high): ";
  92. cin >> f_osv;
  93. cout << "Enter first answear question(1-yes, 0 - no): ";
  94. cin >> f_que;
  95. Anketa *ank = new Anketa;
  96. ank->name = f_name;
  97. ank->age = f_age;
  98. ank->gender = f_gen;
  99. ank->question = f_que;
  100. ank->osvita = f_osv;
  101. if (ank->age>40 && ank->gender == 1 && ank->osvita == 3)
  102. {
  103. if (ank->question == 1)
  104. {
  105. sa++;
  106. }
  107. }
  108. if (ank->age<30 && ank->gender == 0 && ank->osvita == 2)
  109. {
  110. if (ank->question == 0)
  111. {
  112. sb++;
  113. }
  114. }
  115. if (ank->age<25 && ank->gender == 1 && ank->osvita == 1)
  116. {
  117.  
  118. if (ank->question == 1)
  119. {
  120. sc++;
  121. }
  122. }
  123. add_node(root, ank);
  124. break;
  125. }
  126. case 2:// вывод всех людей в списке
  127. {
  128. print_tree(root, 0);
  129. break;
  130. }
  131. case 3:
  132. {
  133.  
  134. cout << "a)-" << sa << endl;
  135. cout << "b)-" << sb << endl;
  136. cout << "c)-" << sc << endl;
  137. break;
  138. }
  139. case 4: {
  140. return 0;
  141. break;
  142. }
  143. }
  144.  
  145. }
  146. getch();
  147. return 0;
  148. }
  149.  
  150. Node *first(Anketa *d)
  151. {
  152. Node *pv = new Node;
  153. pv->d = d;
  154. pv->left = NULL;
  155. pv->right = NULL;
  156. return pv;
  157. }
  158.  
  159. void add_node(Node *root, Anketa *d){
  160. Node *pnew = new Node;
  161. pnew->d=d;
  162. if (root->d->age > d->age){
  163. if (root->left != NULL)
  164. add_node(root->left, d);
  165. else{
  166. root->left = new Node;
  167. root->left->left = root->left->right = NULL;
  168. root->left->d = d;
  169.  
  170. }
  171. }
  172. if (root->d->age < d->age){
  173. if (root->right != NULL)
  174. add_node(root->right, d);
  175. else{
  176. root->right = new Node;
  177. root->right->left = root->right->right = NULL;
  178. root->right->d = d;
  179.  
  180. }
  181. }
  182. }
  183.  
  184. Node * search_Insert(Node *root, Anketa *d)
  185. {
  186. Node *pv = root, *prev;
  187. bool found = false;
  188. while (pv && !found)
  189. {
  190. prev = pv;
  191. if (d->name == pv->d->name)
  192. found = true;
  193. else
  194. if(d->age < pv->d->age)
  195. pv=pv->left;
  196. else
  197. pv=pv->right;
  198. }
  199. if (found) return pv;
  200. //Добавление нового узла
  201. Node *pnew = new Node;
  202. pnew->d=d;
  203. pnew->left=0;
  204. pnew->right=0;
  205. if(d->age<prev->d->age)
  206. prev->left = pnew;
  207. else
  208. prev->right = pnew;
  209. return NULL;
  210. }
Add Comment
Please, Sign In to add comment