Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20

Найти среднее значение чисел, а также количество значений в массиве, превышающих среднее

27.08.2014, 20:35. Показов 6330. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сделал в лоб, голова совсем не варит под вечер:
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
//  sp_Ch6_Pg300_Ex02
/// Занятия по книге Стивена Праты "Язык программирования С++" (2013, 6-е изд.).
/// Упражнения по программированию. Глава 6, страница 300, упражнение 2.
/*
Напишите программу, читающую в массив double до 10 значений
пожертвований. (Или, если хотите, используйте шаблонный объект array.) Программа
должна прекращать ввод при получении нечисловой величины. Она должна
выдавать среднее значение полученных чисел, а также количество значений в
массиве, превышающих среднее.
*/
 
#include <iostream>
#include <windows.h>
#include <limits>
 
int main()
{
    using namespace std;
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    const int arrSize = 10;
    double donation[arrSize];
    cout << "Введите сумму пожертвования в формате xx.yy\n"
            "(где xx - это рубли, а yy - копейки).\n\n";
    for (int i=0; i<arrSize; ++i)
    {
        cout << "Введите сумму " << i+1 << "-го пожертвования: ";
        while (!(cin >> donation[i]))
        {
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
            cout << "Некорректный ввод!" << endl;
            cout << "Введите сумму " << i+1 << "-го пожертвования: ";
        }
    }
 
    for (int i=0; i<arrSize; ++i)
    {
        if (i<arrSize-1)
            cout << "Сумма  " << i+1 << "-го пожертвования: "
                 << donation[i] << endl;
        else
            cout << "Сумма " << i+1 << "-го пожертвования: "
                 << donation[i] << endl;
    }
 
    double sum = 0;
 
    for (int i=0; i<arrSize; ++i)
        sum += donation[i];
 
    double average = sum/arrSize;
 
    int greaterThanAverage = 0;
 
    for (int i=0; i<arrSize; ++i)
    {
        if (donation[i]<average)
            continue;
        else
            ++greaterThanAverage;
    }
 
    cout << endl << "Средняя сумма пожертвований: "
         << average << endl << endl;
 
    cout << endl << "Пожертвований превышающих среднюю сумму: "
         << greaterThanAverage << endl << endl;
 
    return 0;
}
Предложите варианты, как сделать короче и красивее.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.08.2014, 20:35
Ответы с готовыми решениями:

Среднее значение полученных чисел, количество значений в массиве, превышающих среднее
Вот решаю одну задачку из книги Праты: &quot;Напишите программу, читающую в массив double до 10 значений пожертвований. Программа должна...

Найти среднее значение элементов двумерного массива и подсчитать, сколько в этом массиве элементов, превышающих среднее
Составить программу на Паскале. найти среднее значение элементов двумерного массива и подсчитать, сколько в этом массиве элементов,...

Найти в массиве количество элементов, превышающих среднее арифметическое
Дано одномерный массив из 15 целых чисел. Найти количество элементов, превышающих среднее арифметическое всех элементов массива.

21
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
28.08.2014, 07:11  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от BlackIce Посмотреть сообщение
можно сделать стандартными функциями
Отдельная благодарность за std::accumulate, std::count_if и std::bind2nd - впервые с таким сталкиваюсь.
Красивые штуковины
0
 Аватар для IpHuman
14 / 14 / 2
Регистрация: 28.01.2015
Сообщений: 26
06.03.2016, 14:46
Вот мой пример, может кому-то пригодится.
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
#include <iostream>
#include <array>
const int ArSize = 10;
int main()
{
    using namespace std;
    //double arr[ArSize];
    array<double, ArSize> arr;
    cout << "Enter value #1: ";
    int i = 0;
    while (i < ArSize && cin >> arr[i])
    {
        if (++i < ArSize)
            cout << "Enter value #" << i + 1 << ": ";
    }
 
    if (cin.fail())
        cout << "Input terminated. You enter not number!\n";
    else
    {
        double sum = 0.0;
    for (int j = 0; j < ArSize; ++j)
        sum += arr[j];
    double average = sum / ArSize;
    cout << "Average value = " << average << endl;
    cout << "Values bigger then average:\n";
    for (int j = 0; j < ArSize; ++j)
        if (arr[j] > average)
        {
            cout << "Value #" << j + 1 << ": ";
            cout << arr[j] << endl;
        }
 
    }
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.03.2016, 14:46

Функция: подсчитать количество чисел, превышающих среднее арифметическое значение элементов массива
Добрый вечер!Преподаватель дал новую тему,но объяснений по ней-ноль Может кто-нибудь помочь с этой задачей? Вот условие:Создать...

В массиве целых чисел найти среднее арифметическое, максимальное значение, количество отрицательных элементов
6. Дан массив целых чисел. Найти:  - среднее арифметическое;  - (максимальное значение;  - количество отрицательных...

Найти среднее арифметическое положительных значений функции и произведение значений, превышающих a
Для x принадлежит Δx=0.5 найти среднее арифметическое ее положительных значений и произведение значений, превышающих a. Для...

Подсчитать количество элементов массива, превышающих среднее значение
Составить программу для решения задач: Определить среднее значение элементов массива. Затем подсчитать количество элементов массива,...

Подсчитать количество элементов стека превышающих среднее значение
Подсчитать, сколько элементов стека имеют значения, которые превышают среднее арфиметическое всех элементов


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

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

Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru