0 / 0 / 0
Регистрация: 01.03.2016
Сообщений: 82
1

Бинарное дерево, запись пациента

29.04.2016, 16:05. Показов 848. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <fstream>
#include <cstring>
#include <windows.h>
 
 
using namespace std;
struct element {
    int id;
    char lastname[30];
    char name[30];
    char secondname[30];
    char adres[30];
    char phone[30];
    int numberOfCard;
    char diagnos[30];
};
 
 
struct Patient {
 
    element tmp;
    Patient *next;
    Patient *left;
    Patient *right;
};
Patient *head = NULL;
element *root;
 
 
bool addElement(int value, Patient **pNode) {
    element *h=new element;
    if (*pNode == NULL) {
        Patient *t = new Patient;
 
        t->tmp.id = h->id;
        t->left = NULL;
        t->right = NULL;
        *pNode = t;
        return true;
    } else {
        int key = (*pNode)->tmp.id;
        if (key ==h->id) return false;
        if (key >h->id) {
            return addElement(h->id,&((*pNode)->left));
        } else {
            return addElement(h->id,&((*pNode)->right));
        }
    }
}
void traverseTree(Patient *pNode) {
    element *t = new element;
    if (pNode != NULL) {
        traverseTree(pNode->left);
        cout << t->id << endl;
        cout<<t->lastname;
        traverseTree(pNode->right);
    }
}
 
 
element getElement() {
    Patient *temp = new Patient;
 
    cout<<"----------НОВЫЙ ПАЦИЕНТ----------"<<endl;
    cout << "Введите номер пациента: ";
    cin >> temp->tmp.id;
    cout << "Введите фамилию пациента: ";
    cin >> temp->tmp.lastname;
    cout << "Введите имя пациента: ";
    cin >> temp->tmp.name;
    cout << "Введите отчество пациента: ";
    cin >> temp->tmp.secondname;
    cout << "Введите адрес пациента: ";
    cin.ignore();
    cin.getline(temp->tmp.adres, 50);
    cout << "Введите телефон пациента: ";
    cin >> temp->tmp.phone;
    cout << "Введите номер карты пациента: ";
    cin >> temp->tmp.numberOfCard;
    cout << "Введите диагноз пациента: ";
    cin.ignore();
    cin.getline(temp->tmp.diagnos, 50);
 
}
 
 
int main() {
    addElement(1,&head);
  getElement();
 traverseTree(head);
    return 0;
}


Не могу понять почему не работает бинарное дерево, при выводе выдает мусор помогите
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2016, 16:05
Ответы с готовыми решениями:

Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру
Помогите, не могу понять!( Нужно исходное бинарное дерево превратить в бинарное дерево поиска, при...

Запись значения в бинарное дерево
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;fstream&gt;...

Запись структуры в бинарное дерево
Помогите записать структуру в дерево? Нужно записать структуру в дерево. КИНЬТЕ ПРИМЕР ПОЖАЛУЙСТА ...

Запись слова в бинарное дерево
Можно ли записать слово, либо строку в бинарное дерево? Просто у меня стоит задание по...

6
44 / 44 / 19
Регистрация: 04.05.2014
Сообщений: 190
29.04.2016, 18:41 2
В функции getElement данные сохраняются в переменную temp. Эта переменная никак не связана с содержимым бинарного дерева. Происходит утечка памяти, так как переменная temp не удаляется и никуда не передаётся.
0
0 / 0 / 0
Регистрация: 01.03.2016
Сообщений: 82
30.04.2016, 09:21  [ТС] 3
Можете помочь изменить код? Очень нужно
0
44 / 44 / 19
Регистрация: 04.05.2014
Сообщений: 190
30.04.2016, 12:15 4
Desking, не знаю, как вам помочь. Могу объяснить аналогией из реальной жизни.

Врач вызывает пациента, берёт чистый лист бумаги. Перекладывает его в стопку слева от себя.
Берёт из стопки второй лист. Записывает на этот лист ФИО, адрес пациента. И после этого выкидывает исписанный лист в мусорку. После этого смотрит на чистый лист в стопке листов слева от себя и недоумевает, почему он пустой. Вот так же и вы со своей программой.
0
0 / 0 / 0
Регистрация: 01.03.2016
Сообщений: 82
30.04.2016, 13:58  [ТС] 5
я не могу понять ка предать структуру в дерево

Добавлено через 31 минуту
Сделал что-то типа такого, но все равно не работает, вместо айди мусор, а фамилии пациентов выводит правильно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
#include <fstream>
#include <cstring>
 
 
using namespace std;
struct element {
    int id;
    char lastname[30];
    char name[30];
    char secondname[30];
    char adres[30];
    char phone[30];
    int numberOfCard;
    char diagnos[30];
    element *left;
    element *right;
};
 
element *root;
 
 
bool addElement(char *value, element **pNode) {
    element pat;
    if (*pNode == NULL) {
        element *t = new element;
        strcpy(t->lastname, value);
        t->left = NULL;
        t->right = NULL;
        *pNode = t;
        return true;
    } else {
        char *key = (*pNode)->lastname;
        if (key == value) return false;
        if (key > value) {
            return addElement(value, &((*pNode)->left));
        } else {
            return addElement(value, &((*pNode)->right));
        }
    }
}
 
void traverseTree(element *pNode) {
 
    if (pNode != NULL) {
 
        traverseTree(pNode->left);
        cout << pNode->id << " ";
        cout << pNode->lastname << endl;
        traverseTree(pNode->right);
    }
}
 
 
element getElement() {
    element pat;
    for (int i = 0; i < 2; ++i) {
 
 
        cout << "----------НОВЫЙ ПАЦИЕНТ----------" << endl;
        cout << "Введите номер пациента: ";
        cin >> pat.id;
        cout << "dfdf";
        cin.ignore();
        cin.getline(pat.lastname, 30);
        addElement(pat.lastname, &root);
    }
 
}
 
 
int main() {
 
    getElement();
 
 
    traverseTree(root);
 
    return 0;
}
Добавлено через 48 минут
???
0
44 / 44 / 19
Регистрация: 04.05.2014
Сообщений: 190
30.04.2016, 14:21 6
На вашем уровне обучения еще рано писать подобные программы. Начните с чего-нибудь попроще.
0
0 / 0 / 0
Регистрация: 01.03.2016
Сообщений: 82
30.04.2016, 14:23  [ТС] 7
Лабораторная такая, с линейными списками все хорошо было, а с деревьями понять никак не могу
0
30.04.2016, 14:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2016, 14:23
Помогаю со студенческими работами здесь

Запись одинаковых элементов в бинарное дерево
помогите исправить ошибку в программе при записи двувух или более студентов на одну и туже первую...

Бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой
Дано бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой.

Бинарное дерево
Только начал изучать тему &quot;деревья&quot;. Подскажите в чем ошибка)#include &lt;iostream&gt; using namespace...

Бинарное дерево
Здравствуйте, нужно помощь в написании программы. Условие: Каждая вершина бинарного дерева...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru