0 / 0 / 0
Регистрация: 02.05.2018
Сообщений: 5

Проверьте комментарии к коду на с++ по структуре данных и напишите, пожалуйста, что не так)

10.11.2019, 15:54. Показов 1842. Ответов 3

Студворк — интернет-сервис помощи студентам
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
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include <iostream>
#include "locale"
#define  N100
using namespace std;
struct node
{
    int v;//значение
    node *l;//левый узел 
    node *r;//правый узел
}
*D=NULL;//список пустой
node *insert (node *p, int v)//добавление узла в дерево
{
    if (p==NULL)//если дерево пустое
    {
        node *t=new node;//создаем узел t
        t->l=t->r=NULL;//узлы слева и справа зануляем
        t->v=v;//присваиваем узлу t значение v
        return t;//возвращаем узел t
    }
    else
    {
        if(p->v>v)//если значение узла p больше введенного значения v
        p->l=insert(p->l,v);//записываем значение в левый узел
        else
        p->r=insert(p->r, v);//иначе записываем в правый
        return p;// возвращаем дерево p
    }
}
void printf(node *p, int a) // Вывод
{
    if (p!=NULL)//пока не конец дерева
    {
    for (int i=0; i < a; i++)//у 1 элемента a=0 отступ не делаем
    {
        cout << " ";//делаем отступ
    }
    cout << p->v << "\n";//выводим значение и переходим на новую строчку
    printf(p->l, a+1);//двигаемся по дереву налево
    printf(p->r, a+1);//почему-то всегда двигаемся по дереву направо
    }
}
 
int main()
{
    /*D=insert(D,10);
    insert(D,7);
    insert(D,3);
    insert(D,15);
    insert(D,9);*/
    D=insert(D,1);
    insert(D,2);
    insert(D,3);
    insert(D,4);
    insert(D,5);
    insert(D,6);
    insert(D,7);
    insert(D,8);
    insert(D,9);
    insert(D,10);
    printf (D, 0);
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2019, 15:54
Ответы с готовыми решениями:

Объясните что делает данная программа и напишите комментарии к коду
Что эта программа делает и если можно комментарии к ней (C++) #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int pro(int x, int y, int...

Проверьте пожалуйста, что не так?
условие задачи: написать и протестировать функцию, которая находит сумму всех цифр введенного целого числа, если оно является простым и...

Пожалуйста, проверьте программу. Что то не так с форматным выводом
program nakoplenie; var s,x,y,p,z: real; k1, k2, k3,k4,k: integer; function summa(k: integer): real; begin ...

3
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
11.11.2019, 10:44
Цитата Сообщение от Катерина 1 Посмотреть сообщение
Проверьте комментарии к коду на с++ по структуре данных и напишите, пожалуйста, что не так)
Что означает комментарий "почему-то всегда двигаемся по дереву направо", что тебя там смущает?
0
0 / 0 / 0
Регистрация: 02.05.2018
Сообщений: 5
17.11.2019, 13:35  [ТС]
Объясните, что происходит в этих строчках:
1)p->l=insert(p->l,v);//кладем его влево, но как?
2)printf(p->l, a+1); //с помощью рекурсии посещаем левое поддерево и проходим по функции printf()?

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
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include <iostream>
#include "locale"
#define  N100
using namespace std;
struct node
{
    int v;//значение
    node *l;//Левая часть дерева
    node *r;//Правая часть дерева
}
*D=NULL;//объявляем пустой указатель
node *insert (node *p, int v)//добавление узла в дерево
{
    if (p==NULL)//если дерева не существует
    {
        node *t=new node;//выделяем память
        t->l=t->r=NULL;//очищаем память для следующего роста
        t->v=v; //кладем в выделенное место значение v
        return t;//заложили семечко, выходим
 
    }
    else
    {
        if(p->v>v)///если текущий элемент больше чем введенный аргумент v 
        p->l=insert(p->l,v);//кладем его влево
        else
        p->r=insert(p->r, v);//иначе кладем его вправо
        return p;// возвращаем дерево p
    }
}
void printf(node *p, int a) // Вывод
{
    if (p!=NULL) //если дерево не пустое
    {
    for (int i=0; i < a; i++)//у 1 элемента a=0 отступ не делаем
    {
        cout << " ";//делаем отступ
    }
    cout << p->v << "\n";//показываем элемент и переходим на новую строчку
    printf(p->l, a+1); //с помощью рекурсии посещаем левое поддерево и проходим по функции printf()
    printf(p->r, a+1); //с помощью рекурсии посещаем правое поддерево и проходим по функции printf()
    }
}
 
int main()
{
    /*D=insert(D,10);
    insert(D,7);
    insert(D,3);
    insert(D,15);
    insert(D,9);*/
    D=insert(D,1);
    insert(D,2);
    insert(D,3);
    insert(D,4);
    insert(D,5);
    insert(D,6);
    insert(D,7);
    insert(D,8);
    insert(D,9);
    insert(D,10);
    printf (D, 0);
    system("pause");
    return 0;
}
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.11.2019, 09:00
Лучший ответ Сообщение было отмечено Катерина 1 как решение

Решение

Цитата Сообщение от Катерина 1 Посмотреть сообщение
1)p->l=insert(p->l,v);//кладем его влево, но как?
Здесь рекурсивно вызывается функция insert, которая рекурсивно-же пробежится по ветке p->l (которае точно такое же дерево) и добавит элемент когда выполится условие if (p==NULL)//если дерева не существует

Добавлено через 2 минуты
Цитата Сообщение от Катерина 1 Посмотреть сообщение
2)printf(p->l, a+1); //с помощью рекурсии посещаем левое поддерево и проходим по функции printf()?
То же самое - левая и правая ветка, это такие же деревья, как и корень (у тебя D), поэтому они обрабатываются теми же самыми функциями, т.е. рекурсивно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.11.2019, 09:00
Помогаю со студенческими работами здесь

Напишите комментарии к коду
Программа не моя , а друга. Просил помочь, а я прошу Вас знатоков С++, помочь в нелегком деле, нужно описать каждую функцию(сделать...

Нужно отделить части адреса как в комментарии к программе. Но почему то не работает. Скажите пожалуйста. Что не так?)
Нужно отделить части адреса как в комментарии к программе. Но почему то не работает. Скажите пожалуйста. Что не так?) ...

Пожалуйста напишите Комментарии
Пожалуйста напишите Комментарии Задача на латинский квадрат #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int n; int...

Помогите, пожалуйста написать комментарии к коду задачи
Ребята, помогите, пожалуйста написать комментарии к коду задачи (300 строк). Просто, что да как реализуется. Очень нужно, пожалуйста,...

Напишите, пожалуйста, подробные комментарии
Закомментируйте код пожалуйста, подробно если можно, чтоб понять что к чему #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...


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

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

Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru