Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
1

найти среднее значение всех ключей дерева c++

07.06.2013, 10:39. Показов 1706. Ответов 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
#include<iostream.h>
struct node
{
  int Key;
  int Count;
  node *Left;
  node *Right;
};
 
class TREE
{
  private:
    node *duk; //Корень дерева.
  public:
    TREE() { duk = NULL; }
    node **GetDuk() { return &duk; }
    node *Tree (int, node **); 
    void Vyvod (node **, int);
};
 
void main ()
{
  TREE A;
  int n;
 
  cout<<"vvedite kol/ vershin -...\n"; cin>>n;
  cout<<"vvedite klychi...\n";
  A.Tree (n,A.GetDuk()); A.Vyvod (A.GetDuk(),0);
}
   
node *TREE::Tree (int n,node **p)
// Построение идеально сбалансированного
//           дерева с n вершинами.
// *p - указатель на корень дерева.
{
  node *now;
  int x,nl,nr;
     
  now = *p;
  if  (n==0) *p = NULL;
  else
  {
    nl = n/2; nr = n - nl - 1;
    cin>>x;
    now = new(node);
    (*now).Key = x;
    Tree (nl,&((*now).Left));
    Tree (nr,&((*now).Right));
    *p = now;
  }
return 0;
}
 
void TREE::Vyvod (node **w,int l)
// Изображение бинарного дерева, заданного
// указателем *w на экране дисплея.
{
  if  (*w!=NULL)
  {
    Vyvod (&((**w).Right),l+1);
    for  (int i=1; i<=l; i++) cout<<"   ";
    cout<<(**w).Key<<endl;
    Vyvod (&((**w).Left),l+1);
  }
}
подскажите пожалуйста, как это можно сделать.

Добавлено через 16 часов 18 минут
___
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2013, 10:39
Ответы с готовыми решениями:

Найти среднее арифметическое всех членов дерева
Добрый день, форумчане. Требуется найти среднее арифметическое всех чисел, находящихся в дереве,...

В одномерном массиве определить среднее значение всех элементов,значение которых превышает среднее значение
в произвольно заданном одномерном массиве определить среднее значение всех элементов,значение...

Найти среднее арифметическое всех элементов дерева
Найти среднее арифметическое всех элементов дерева. Есть код, но он ищет сумму. Как его изменить?...

Вычисление среднего арифметического всех ключей непустого дерева
Составить программу вычисления среднего арифметического всех ключей непустого дерева.

6
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
07.06.2013, 10:58 2
сделать аналогично Vyvod

C++
1
2
3
4
5
6
7
8
9
10
void TREE::GetSum (node **w)
{
  if  (*w!=NULL)
  {
    GetSum (&((**w).Right));
    sum+=(**w).Key;
    n++;
    GetSum (&((**w).Left));
  }
}
потом
C++
1
2
3
4
Tree::sum = 0;
Tree::n = 0;
GetSum (w);
float srednee = (float)sum/k;
1
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
07.06.2013, 14:57  [ТС] 3
Цитата Сообщение от AntonChik Посмотреть сообщение
Tree::sum = 0;
Tree::n = 0;
GetSum (w);
float srednee = (float)sum/k;
А это куда нужно вставить?
0
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
10.06.2013, 12:14  [ТС] 4
вставляю в main -ругается
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
10.06.2013, 12:21 5
эх... все самому за всех делать приходится...
ясно понятно что надо делать так, добавить сюда
C++
1
2
3
4
5
6
7
class TREE
{
///...
  public:
int sum,n;
...
}
потом в main
C++
1
2
3
4
A.sum = 0;
A.n = 0;
A.GetSum (w);
float srednee = (float)A.sum/A.n;
1
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
10.06.2013, 13:36  [ТС] 6
сейчас попробую

Добавлено через 5 минут
пишет:
C++
1
 error C2065: 'w' : undeclared identifier
на
C++
1
A.GetSum(w);
хотя в функции (w)есть.
C++
1
2
3
4
5
6
7
8
9
10
void TREE::GetSum (node **w)
{
  if  (*w!=NULL)
  {
    GetSum (&((**w).Right));
    sum+=(**w).Key;
    n++;
    GetSum (&((**w).Left));
  }
}
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
10.06.2013, 13:41 7
чувствую понимания происходящего нет даже смутного.
C++
1
A.GetSum(A.GetDuk());
1
10.06.2013, 13:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2013, 13:41
Помогаю со студенческими работами здесь

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

Найти среднее значение всех элементов
Дана последовательность из 20 элементов. Найти среднее значение всех элементов при делении на 8...

Определить среднее значение всех элементов, значение которых превышает среднее для массива
в произвольно заданном одномерном массиве определить среднее значение всех элементов, значение...

Найти среднее значение всех элементов матрицы
Дана матрица (15 строк и 10 столбцов), которая должна быть заполнена цифрами от 2 до 5 . Найти...


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

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