Форум программистов, компьютерный форум CyberForum.ru

Работа с элементами бинарного дерева вещественных чисел. Среднее геометрическое всех элементов дерева - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить номер минимального по модулю элемента и сумму модулей элементов, расположенных после первого отрицательного http://www.cyberforum.ru/cpp-beginners/thread1146194.html
Добрый день. Прошу Вашей помощи. В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) номер минимального по модулю элемента массива; 2) сумму модулей элементов массива, расположенных после первого отрицательного элемента.
C++ Определить, сколько из чисел больше своих «соседей» Определить, сколько из чисел больше своих «соседей» .Но нужно решить эту задачу с использование ввода из файла. Заранее спасибо http://www.cyberforum.ru/cpp-beginners/thread1146190.html
Написать программу, которая методом обмена "пузырька" сортирует по убыванию введенный с клавиатуры одномерный массив C++
...написать программу, которая методом обмена "пузырька" сортирует по убыванию введенный с клавиатуры одномерный массив
C++ обработка матриц с использованием процедур
Даны три матрицы размерностью 3*4. Найдите для каждой из них максимальный и минимальные элементы, используя процедуру. Вывести матрицы, у которой наибольший максимальный и наименьший минимальный элементы.
C++ Некорректный результат в цикле http://www.cyberforum.ru/cpp-beginners/thread1146158.html
По словам препода в чем то ошибка. на первом фото условие, на втором 4 вариант. #include <stdio.h> #include <math.h> #include <conio.h> #include <stdlib.h> int main(void) { double s,x,a,k; s = 0;
C++ Заготовка на зиму Помогите решить такую задачу, а то никак...) Ежегодно Совунья заготавливает на зиму компоты для себя и своих друзей. Фрукты, которые она использует для этого, растут на том же дереве, где находится ее домик. Все было бы хорошо, если бы ее дерево не росло, а вместе с ним не увеличивались бы урожаи фруктов. В один прекрасный вечер, заготавливая компоты, она поняла, что просто не справляется с... подробнее

Показать сообщение отдельно
Доронин_Виталий
0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 2
12.04.2014, 15:12     Работа с элементами бинарного дерева вещественных чисел. Среднее геометрическое всех элементов дерева
Класс TreeDouble, для работы с элементами бинарного дерева вещественных чисел.
В этом классе определены функции-члены класса, обеспечивающие: заполнение дерева, добавление элементов дерева, удаление элемента дерева.
Дополнительно перезагружены в этом классе операторные функции, которые обеспечивают ввод/вывод элементов класса (в том числе и в алфавитном порядке).
Так-же нужно определить операторную функцию / , которая возвращает среднее геометрическое всех элементов дерева.




___________
TreeDouble.h |
___________|

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
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <fstream>
using namespace std;
 
//  Вспомогательный класс, описывающий один узел:
class TreeNode
{
private:
    friend class TreeDouble;  //     Основной класс должен быть объявлен дружественным, чтобы он имел доступ к элементам узла 
    //  Элементы данных:
    double data;
    TreeNode* LeftPtr;
    TreeNode* RightPtr;
    
public:
    //  Конструктор:
    TreeNode(double d)
    {data = d; LeftPtr = NULL; RightPtr = NULL;}
};
 
//   Основной класс:
class TreeDouble
{
 
private:
    TreeNode* rootPtr; //    указатель на корневой узел (элемент данных)
    //  закрытые функции:
    void Add(TreeNode*&,double); // добавляет новый элемент
    void preOrder(TreeNode*);  //   Обход в ширину
    void inOrder(TreeNode*); //     Последовательный обход
    
public: 
    TreeDouble() {rootPtr = NULL;}  // Конструктор
    // открытые функции, которые будет использовать главная программа:  
    void Add( double);
    void preOrder();
    void inOrder();
    void postOrder();
};
 
// Определение функций:
 
void TreeDouble :: Add(double m)    //Функция, которая добавляет узел к дереву
{
    Add(rootPtr, m);  //Здесь и далее перегрузка функций требуется,т.к. главная программа не имеет доступа к корневому узлу дерева,поэтому единственное назначение этого вызова функции Add()–передать адрес корневого узла
}
 
 
void TreeDouble :: Add(TreeNode*& ptr, double m)    //Основная функция, которая обходит дерево и привязывает новый узел к дереву
{
    if (!ptr) // Если текущий указатель равен 0, к нему подвязываем новый узел или создаем корневой 
        ptr = new TreeNode(m);  //благодаря тому,что параметр ptr объявлен как ссылка на указатель,уста-навливается значение указателя на корневой узел или изменяется значение указателя в том узле,к которому привязывается новый
    else
    {
        if (m < ptr->data) Add(ptr->LeftPtr, m);    //  если новый элемент меньше значения в текущем узле, идем налево 
        else if (m > ptr->data) Add(ptr->RightPtr, m);      //  в противном случае - направо
 
        // если встречается повторяющееся значение, то оно  игнорируется, благодаря этому все элементы дерева будут различны 
    }
}
 
// три нижеследующие функции отличаются только последовательностью выполнения операторов и благодаря этому позволяют выводить элементы дерева на экран в различном порядке:
 
// обход дерева “по ширине”
void TreeDouble :: preOrder()
{
    preOrder(rootPtr);
}
 
void TreeDouble :: preOrder(TreeNode* ptr)
{
    if (ptr)
    {
        cout << ptr->data << " "; // выводим элемент
        preOrder(ptr->LeftPtr); // спускаемся влево
        preOrder(ptr->RightPtr); // спускаемся вправо
    }
}
 
// обход в порядке возрастания:
void TreeDouble :: inOrder()    
{
    inOrder(rootPtr);
}
 
void TreeDouble :: inOrder(TreeNode* ptr)   
{
    if (ptr)
    {
        inOrder(ptr->LeftPtr);
        cout << ptr->data << " ";
        inOrder(ptr->RightPtr);
    }
}
________
main.cpp |
________|
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
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <fstream>
#include "TreeDouble.h"
using namespace std;
 
int main()
{
    //Настройки шрифтов и региональных стандартов: 
    if(SetConsoleCP(1251)==0)
    //проверка правильности установки кодировки символов для ввода
    {
        cerr<<"Fialed to set codepage!"<<endl;
    }
    if(SetConsoleOutputCP(1251)==0)//тоже самое для вывода
    {
        cerr<<"Failed to set OUTPUT page!"<<endl;
    }
    TreeDouble tree; // Объявляем объект
    double x;
// Открываем файл с данными:
    cout<<"\nВведите адрес файла: ";
    char s[20]; 
    cin>>s;
    cout<<endl;
    ifstream file(s , ios::in);
    if (file)
    {
        cout << "Прочитана последовательность: \n";
        do
        {
            file>>x;
            if (!file.eof())
            {
                cout << x << " ";
                tree.Add(x); // добавляем элемент к дереву
            }
        } while (!file.eof());
        cout<<endl;
 
        cout <<"Обход в ширину: \n";
        tree.preOrder();
        cout<<endl;
 
        cout <<"Отсортированная последовательность: \n";
        tree.inOrder();
        cout<<endl;
 
        cout <<"Обратная последовательность: \n";
        tree.postOrder();
        cout<<endl;
 
    }
    else cout << "Файл не найден\n";
    _getch();
    return 0;
}


Помогите пожалуйста с тем, что выделено красным цветом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru