Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <conio.h>
- #include <string>
- using namespace std;
- struct Anketa {// создание списка
- int age;
- bool gender, question;
- int osvita;
- string name;
- Anketa *next;
- Anketa *prev;
- };
- struct Node {
- Anketa *d;
- Node *left;
- Node *right;
- };
- void add_node(Node *root, Anketa *d);
- Node *first(Anketa *d);//формирование первого элемента дерева
- Node *search_Insert(Node *root, Anketa *d);//пошук з включенням
- void print_tree(Node *root, int l);//прямой обход и вывод дерева
- int main()
- {
- int f_age, f_osv;
- bool f_gen, f_que;
- string f_name;
- cout << "Enter your name: ";
- cin >> f_name;
- cout << "Enter age: ";
- cin >> f_age;
- cout << "Enter gender(0 - woman, 1 - man): ";
- cin >> f_gen;
- cout << "Enter osvita(1-started, 2 - medium, 3 - high): ";
- cin >> f_osv;
- cout << "Enter first answear question(1-yes, 0 - no): ";
- cin >> f_que;
- Anketa *d=new Anketa;
- d->name=f_name;
- d->age = f_age;
- d->gender = f_gen;
- d->question = f_que;
- d->osvita = f_osv;
- Node *root = first(d);
- int wh = 0, sa = 0, sb = 0, sc = 0, k;
- if (d->age>40 && d->gender == 1 && d->osvita == 3)
- {
- if (d->question == 1)
- {
- sa++;
- }
- }
- if (d->age<30 && d->gender == 0 && d->osvita == 2)
- {
- if (d->question == 0)
- {
- sb++;
- }
- }
- if (d->age<25 && d->gender == 1 && d->osvita == 1)
- {
- if (d->question == 1)
- {
- sc++;
- }
- }
- while (1)
- {
- k = 0;
- cout << "\nEnter, what you want to do: " << endl;
- cout << "1 - enter new candidate;" << endl;
- cout << "2 - check list;" << endl;
- cout << "3 - check special info;" << endl;
- cout << "4 - exit the programm;" << endl;
- cin >> k;
- switch (k)
- {
- case 1:// добавление нового человека в опрос
- {
- cout << "\nEnter your name: ";
- cin >> f_name;
- cout << "Enter age: ";
- cin >> f_age;
- cout << "Enter gender(0 - woman, 1 - man): ";
- cin >> f_gen;
- cout << "Enter osvita(1-started, 2 - medium, 3 - high): ";
- cin >> f_osv;
- cout << "Enter first answear question(1-yes, 0 - no): ";
- cin >> f_que;
- Anketa *ank = new Anketa;
- ank->name = f_name;
- ank->age = f_age;
- ank->gender = f_gen;
- ank->question = f_que;
- ank->osvita = f_osv;
- if (ank->age>40 && ank->gender == 1 && ank->osvita == 3)
- {
- if (ank->question == 1)
- {
- sa++;
- }
- }
- if (ank->age<30 && ank->gender == 0 && ank->osvita == 2)
- {
- if (ank->question == 0)
- {
- sb++;
- }
- }
- if (ank->age<25 && ank->gender == 1 && ank->osvita == 1)
- {
- if (ank->question == 1)
- {
- sc++;
- }
- }
- add_node(root, ank);
- break;
- }
- case 2:// вывод всех людей в списке
- {
- print_tree(root, 0);
- break;
- }
- case 3:
- {
- cout << "a)-" << sa << endl;
- cout << "b)-" << sb << endl;
- cout << "c)-" << sc << endl;
- break;
- }
- case 4: {
- return 0;
- break;
- }
- }
- }
- getch();
- return 0;
- }
- Node *first(Anketa *d)
- {
- Node *pv = new Node;
- pv->d = d;
- pv->left = NULL;
- pv->right = NULL;
- return pv;
- }
- void add_node(Node *root, Anketa *d){
- Node *pnew = new Node;
- pnew->d=d;
- if (root->d->age > d->age){
- if (root->left != NULL)
- add_node(root->left, d);
- else{
- root->left = new Node;
- root->left->left = root->left->right = NULL;
- root->left->d = d;
- }
- }
- if (root->d->age < d->age){
- if (root->right != NULL)
- add_node(root->right, d);
- else{
- root->right = new Node;
- root->right->left = root->right->right = NULL;
- root->right->d = d;
- }
- }
- }
- Node * search_Insert(Node *root, Anketa *d)
- {
- Node *pv = root, *prev;
- bool found = false;
- while (pv && !found)
- {
- prev = pv;
- if (d->name == pv->d->name)
- found = true;
- else
- if(d->age < pv->d->age)
- pv=pv->left;
- else
- pv=pv->right;
- }
- if (found) return pv;
- //Добавление нового узла
- Node *pnew = new Node;
- pnew->d=d;
- pnew->left=0;
- pnew->right=0;
- if(d->age<prev->d->age)
- prev->left = pnew;
- else
- prev->right = pnew;
- return NULL;
- }
Add Comment
Please, Sign In to add comment