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

Cреднее арфиметическое элементов дерева - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти минимальный и максимальный элемент массива http://www.cyberforum.ru/cpp-beginners/thread277108.html
С++ ребят помогите пожалуйста! Задача: написать на с++ : 1 открыть файл 2 ввести массив х 3 найти мин и макс по массиву х. 4 вывести в файл
C++ Заполнение массива по определенной закономерности Ребят, помогите, пожалуйста заполнить массив вот таким образом a1 a2 a3 ... a(n-2) a(n-1) a(n) a2 a3 a4 ... a(n-1) a(n) a1 a3 a4 ... http://www.cyberforum.ru/cpp-beginners/thread277087.html
Болты и гайки. C++
Болты и гайки (Время: 1 сек. Память: 16 Мб Сложность: 17%) Вновь созданная фирма купила заброшенные склады на окраине города. Новому заведующему складами поручили произвести учёт в короткие...
C++ лимузин
Не могу с помощью класса вывести на экран лимузин.. компилятор выбивает ошибку.. помогите разобраться. #include<conio.h> #include<graphics.h> #include<iostream> using std::cout; using std::cin;...
C++ Одномерный массив. http://www.cyberforum.ru/cpp-beginners/thread277037.html
Прошу помощи в решении 3 задач на одномерный массив на C++: 1) Дан массив х1,х2,...,xn. Найти количество элементов кратных трем и пяти. 2) Дан массив х1,х2,...,xn. Все максимальные элементы...
C++ Сортировка методом центрированной вставки Создать шаблон функции, выполняющей сортировку методом центрированной вставки в массиве.Протестировать шаблон для массивов с элементами различных типов: int, float и char. подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
17.04.2011, 23:48
Читает целые числа из файла, выводит значения и среднее арифметическое
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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct NODE {
    int value;
    int count;
    struct NODE * left;
    struct NODE * right;
} node_t;
 
node_t * new_node(int val){
    node_t * n;
    if ( ( n = (node_t*)malloc(sizeof(node_t)) ) == NULL )
        return NULL;
    n->value = val;
    n->count = 1;
    n->left = NULL;
    n->right = NULL;
    return n;
}
 
int add_node(node_t ** root, int val){
    if ( ! *root )
        return ( *root = new_node(val) ) ? 0 : -1;
    if ( (*root)->value > val )
        return add_node(&(*root)->left, val);
    if ( (*root)->value < val )
        return add_node(&(*root)->right, val);
    (*root)->count += 1;
    return 0;
}
 
void del_tree(node_t ** root){
    if ( *root ){
        del_tree(&(*root)->left);
        del_tree(&(*root)->right);
        free(*root);
        *root = NULL;
    }
}
 
void dump(const node_t * root){
    if ( root ){
        dump(root->left);
        printf("%d X %d\n", root->value, root->count);
        dump(root->right);
    }
}
 
int values_count(const node_t * root){
    return ( root ) ? values_count(root->left) + root->count + values_count(root->right) : 0;
}
 
int values_sum(const node_t * root){
    return ( root ) ? values_sum(root->left) + root->value * root->count + values_sum(root->right) : 0;
}
 
#define FILE_NAME "numbers.txt"
 
int main(void){
    int val;
    FILE * f;
    node_t * tree;
 
    if ( ( f = fopen(FILE_NAME, "r") ) == NULL ){
        perror("fopen");
        exit(1);
    }
 
    tree = NULL;
    while ( fscanf(f, "%d", &val) == 1 ){
        if ( add_node(&tree, val) ){
            fprintf(stderr, "Memory error!\n");
            fclose(f);
            exit(1);
        }
    }
    if ( ferror(f) ){
        fprintf(stderr, "Error while reading input file!\n");
        del_tree(&tree);
        if ( fclose(f) )
            perror("fclose");
        exit(1);
    }
    if ( fclose(f) )
        perror("fclose");
 
    if ( ! tree ){
        fprintf(stderr, "No data!\n");
        exit(1);
    }
 
    printf("Values:\n");
    dump(tree);
    printf("-------------------------\nAverage: %f\n", (double)values_sum(tree) / values_count(tree));
 
    del_tree(&tree);
    system("pause");
    exit(0);
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru