Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/47: Рейтинг темы: голосов - 47, средняя оценка - 4.87
 Аватар для Iskandar
1 / 1 / 1
Регистрация: 30.03.2015
Сообщений: 15

Вершины дерева вещественные числа. Описать процедуру, которая вычисляет среднее арифметическое всех вершин

14.04.2015, 19:00. Показов 9536. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вершины дерева вещественные числа. Описать процедуру, которая вычисляет среднее арифметическое всех вершин дерева и добавляет в дерево вершину с вычисленным значением(бинарное дерево). вот код но там надо сделать так что когда вводишь одинаковый элемент то эти элементы надо как один элемент считать:
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
94
95
96
97
98
99
100
101
102
103
#include <iostream>
 
using namespace std;
 
struct vershin
{
    float data;
    vershin *l, *r;
};
 
void add(vershin *&d, float x)
{
    if(d == NULL)
    {
        d = new vershin;
        d->data = x;
        d->l = d->r = NULL;
    }
    if(d->data > x) add(d->l,x);
    if(d->data < x) add(d->r,x);
}
 
void obxod1(vershin *d)
{
    if(d!=NULL)
    {
        cout << d->data << ",";
        obxod1(d->l);
        obxod1(d->r);
    }
}
 
void obxod2(vershin *d)
{
    if(d!=NULL)
    {
        obxod2(d->l);
        cout << d->data << ",";
        obxod2(d->r);
    }
}
 
void obxod3(vershin *d)
{
    if(d!=NULL)
    {
        obxod3(d->l);
        obxod3(d->r);
        cout << d->data << ",";
    }
}
 
void visual(vershin *d, int u)
{
    if(d != NULL)
    {
        visual(d->r,u+1);
        for(int i = 0; i < u; i++)
        {
            cout << "\t";
        }
        cout << d->data << endl;
        visual(d->l,u+1);
    }
}
 
void sredarif(vershin *d, float &s)
{
    int k = 0;
    if(d!=NULL)
    {
        s+=d->data;
        sredarif(d->l, s);
        k++;
        sredarif(d->r, s);
    }
}
 
int main()
{
    vershin *tree = NULL;
    float N, x, s = 0, sr;
    cout << "Vvedite kolichestvo derevya = "; cin >> N;
    for(int i = 1; i <= N; i++)
    {
        cin >> x;
        add(tree,x);
    }
 
    sredarif(tree,s);
    cout<<"summa->"<<s<<endl;
    sr = s/N;
    cout << sr<<endl;;
    add(tree,sr);
    visual(tree,0);
    cout << "\nKLP: ";
    obxod1(tree);
    cout << "\nLKP: ";
    obxod2(tree);
    cout << "\nLPK: ";
    obxod3(tree);
    return 0;
}
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.04.2015, 19:00
Ответы с готовыми решениями:

Записи вершин дерева - вещественные числа. Описать процедуру, которая выбирает все вершины с отрицательными за
Записи вершин дерева - вещественные числа. Описать процедуру, которая выбирает все вершины с отрицательными записями и строит из них новое...

Написать рекурсивную процедуру, которая печатает ключи всех вершин двоичного дерева
Необходимо написать рекурсивную процедуру, которая печатает ключи всех вершин двоичного дерева. Двоичное дерево задастся в файле в...

Описать процедуру, которая вычисляет третью степень числа
Ргос1. Описать процедуру PowerA3(A, В), которая вычисляет третью степень числа А и возвращает ее в переменной В (А — входной, В — выходной...

16
 Аватар для Tordek
58 / 51 / 38
Регистрация: 22.01.2015
Сообщений: 176
15.04.2015, 21:11
К ф-циям добавь этот код:
C++
1
2
3
4
5
6
7
8
9
int q = 0;
void count(vershin *d)
{
if(d!=NULL)
    {   q++;
        count(d->l);
        count(d->r);
    }
}
Вот ф-ция main:
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
int main()
{
 
    vershin *tree = NULL;
    float N, x, s = 0, sr;
    cout << "Vvedite kolichestvo derevya = "; cin >> N;
    for(int i = 1; i <= N; i++)
    {
        cin >> x;
        add(tree,x);
    }
 
    sredarif(tree,s);
    cout<<"summa->"<<s<<endl;
    count(tree);
    sr = s/q;
    cout << sr<<endl;;
    add(tree,sr);
    visual(tree,0);
    cout << "\nKLP: ";
    obxod1(tree);
    cout << "\nLKP: ";
    obxod2(tree);
    cout << "\nLPK: ";
    obxod3(tree);
        return 0;
}
1
 Аватар для Iskandar
1 / 1 / 1
Регистрация: 30.03.2015
Сообщений: 15
15.04.2015, 21:41  [ТС]
Можно сделать так что визуализация вышла как вертикально а не горизонтально, что та не получается спасибо еще раз

Добавлено через 11 минут
Я так сделал но они альтернативные вот у меня так получилось:
C++
1
2
3
4
5
6
7
8
9
10
void sredarif(vershin *d, float &s, int &S)
{
    if(d!=NULL)
    {
        S++;
        s+=d->data;
        sredarif(d->l, s, S);
        sredarif(d->r, s, S);
    }
}
Ф-я main:
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
int main()
{
    vershin *tree = NULL;
    float N, x, s = 0, sr;
    cout << "Vvedite kolichestvo derevya = "; cin >> N;
    for(int i = 1; i <= N; i++)
    {
        cin >> x;
        add(tree,x);
    }
    int S=0;
    sredarif(tree,s,S);
    cout<<"summa->"<<s<< "\nKolichestvo - " << S <<endl;
    sr = s/S;
    cout << sr<<endl;;
    add(tree,sr);
    visual(tree,0);
    cout << "\nKLP: ";
    obxod1(tree);
    cout << "\nLKP: ";
    obxod2(tree);
    cout << "\nLPK: ";
    obxod3(tree);
    return 0;
}
но как можно что бы вывод на экран как дерево вышла (я еще не разобрался) как бином Ньютона
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 29
16.04.2015, 18:40
Tordek, а как найти среднее арифметическое элементов дерева, не подскажете?
0
 Аватар для Iskandar
1 / 1 / 1
Регистрация: 30.03.2015
Сообщений: 15
16.04.2015, 20:39  [ТС]
Ananastasia, вот:
C++
1
sr = s/q;
или:
C++
1
sr = s/S;
Добавлено через 1 час 4 минуты
Ananastasia, Вы программу посмотрели?
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 29
16.04.2015, 22:14
Iskandar, Да,запустилась. Спасибо
0
 Аватар для Iskandar
1 / 1 / 1
Регистрация: 30.03.2015
Сообщений: 15
16.04.2015, 22:18  [ТС]
Здесь вершины и элементы они одинаковые.
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 29
16.04.2015, 22:58
Iskandar, уточнить хотела, эти функции за что отвечают
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void visual(vershin *d, int u)
{
    if(d != NULL)
    {
        visual(d->r,u+1);
        for(int i = 0; i < u; i++)
        {
            cout << "\t";
        }
        cout << d->data << endl;
        visual(d->l,u+1);
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
void sredarif(vershin *d, float &s)
{
    int k = 0;
    if(d!=NULL)
    {
        s+=d->data;
        sredarif(d->l, s);
        k++;
        sredarif(d->r, s);
    }
}
Добавлено через 9 минут
с первой разобралась
0
 Аватар для Iskandar
1 / 1 / 1
Регистрация: 30.03.2015
Сообщений: 15
17.04.2015, 07:05  [ТС]
Ananastasia, второй некорректно(если элементы одинаковые то отдельно считает) но лучше вместо его пишите этот:
C++
1
2
3
4
5
6
7
8
9
10
void sredarif(vershin *d, float &s, int &S)
{
    if(d!=NULL)
    {
        S++;
        s+=d->data;
        sredarif(d->l, s, S);
        sredarif(d->r, s, S);
    }
}
Добавлено через 2 минуты
и ф-я main:
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
int main()
{
    vershin *tree = NULL;
    float N, x, s = 0, sr;
    cout << "Vvedite kolichestvo derevya = "; cin >> N;
    for(int i = 1; i <= N; i++)
    {
        cin >> x;
        add(tree,x);
    }
    int S=0;
    sredarif(tree,s,S);
    cout<<"summa->"<<s<< "\nKolichestvo - " << S <<endl;
    sr = s/S;
    cout << sr<<endl;;
    add(tree,sr);
    visual(tree,0);
    cout << "\nKLP: ";
    obxod1(tree);
    cout << "\nLKP: ";
    obxod2(tree);
    cout << "\nLPK: ";
    obxod3(tree);
    return 0;
}
или код Tordek, можно использовать

Добавлено через 3 минуты
Вторая функция вычисляет сумму элементов и добавляет счетчику каждый обход, если встречается одинаковые элементы то счетчик не работает
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 29
17.04.2015, 15:12
Iskandar, спасибо большое,поняла
0
 Аватар для Iskandar
1 / 1 / 1
Регистрация: 30.03.2015
Сообщений: 15
17.04.2015, 16:05  [ТС]
Tordek, вы здесь?
0
 Аватар для Tordek
58 / 51 / 38
Регистрация: 22.01.2015
Сообщений: 176
17.04.2015, 23:22
Iskandar, завтра решу вашу проблему. А с кодом вы правы -- ваш вариант более удачный.
1
 Аватар для Iskandar
1 / 1 / 1
Регистрация: 30.03.2015
Сообщений: 15
18.04.2015, 07:02  [ТС]
Tordek, спасибо большое !!!
0
1 / 1 / 0
Регистрация: 18.04.2015
Сообщений: 12
18.04.2015, 20:02
Iskandar, а я перевожу на СИ, как заменить
C++
1
cout << d->data << endl;
эту строчку
0
 Аватар для Iskandar
1 / 1 / 1
Регистрация: 30.03.2015
Сообщений: 15
18.04.2015, 22:13  [ТС]
Ну точно не знаю попробуйте этот код:
C
1
printf ("%d \n", d->data );
Добавлено через 14 минут
Я этот код попробовал:
C
1
printf ("%f \n", d->data );
вроде работает
0
 Аватар для Tordek
58 / 51 / 38
Регистрация: 22.01.2015
Сообщений: 176
18.04.2015, 23:01
Iskandar, идеальной визуализации в консоли всё-равно не построить таким способом, как пытаетесь вы, так как возврат на предыдущие строки консоли из программы невозможен, если я не ошибаюсь. Тут нужен или совершенно иной, неизвестный мне метод(тот, который я могу предложить заставит переделывать программу слишком сильно) либо постройка в визуальном режиме. И причём здесь бином Ньютона?
1
 Аватар для Iskandar
1 / 1 / 1
Регистрация: 30.03.2015
Сообщений: 15
19.04.2015, 11:10  [ТС]
нет, мой друг сделал это, но он не дает мне посмотреть как это сделано, на счет бином Ньютона ну наверно вывод на экран вертикальном виде они похожи. Да вы правы здесь бином Ньютона не причём(извиняюсь за грубый сходности).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2015, 11:10
Помогаю со студенческими работами здесь

Описать процедуру, которая вычисляет периметр и площадь прямоугольника
Ргос5. Описать процедуру RectPS(x1, y1, x2, y2, P, S), которая вычисляет периметр Р и площадь S прямоугольника со сторонами, параллельными...

Написать программу,которая вычисляет среднее арифметическое
Решить задачу двумя методами:используя цикл for и используя цикл whilе(либо do-whilе). Написать программу,которая вычисляет среднее...

Написать программу, которая вычисляет среднее арифметическое
Помогите пожалуйста написать программу, которая вычисляет среднее арифметическое последовательности дробных чисел, вводимых с клавиатуры.

Описать процедуру, которая вычисляет сумму элементов двух одномерных массивов
Помогите пожалуйста написать код на Visual С++. я написала код без процедуры, все работает. Но не знаю как написать с процедурой. ...

Описать процедуру, которая возвращает среднее арифметическое значение нечетных цифр, входящих в запись числа
1. Описать процедуру, которая возвращает среднее арифметическое значение нечетных цифр, входящих в запись числа типа LongInt.


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru