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

Написать программу, которая определяет количество учеников в классе, чей рост превышает средний

21.09.2017, 13:15. Показов 12950. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу, которая определяет количество учеников в классе, чей рост превышает средний. Рекомендуемый вид экрана во время работы программы приведен ниже.
*** Анализ роста учеников ***
Введите рост (см) и нажмите <Enter>.
Для завершения введите 0 и нажмите <Enter>
-> 175
-> 170
-> 180
-> 168
-> 170
-> 0
Средний рост: 172.6 см
У 2 человек рост превышает средний.
У меня получился вот такой код.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
setlocale(LC_ALL, "RUSSIAN");
const int size = 5;
float ar[size], x, povtor = 0,sum=0,sr=0;
cout << "*** Анализ роста учеников ***"<<endl;
cout << "Введите рост (см) и нажмите <Enter>." << endl;
cout << "Для завершения введите 0 и нажмите <Enter>" << endl;
for (int i = 0; i < size; i++)
{
    cout << "->";
    cin >> ar[i];
    sum += ar[i];
    sr = sum / size;
}
 
for (int i = 0; i < size; i++)
{
    if (sr==ar[i])
    {
        povtor++;
    }
}
cout << "Средний рост: " << sr << " см" << endl;
cout << "У " << povtor << " человек рост превышает средний." << endl;
Не могу понять почему не считает количество учеников с ростом превышающий средний, и как прекратить ввод.
Буду рад любой помощи.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2017, 13:15
Ответы с готовыми решениями:

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

Определить количество учеников в классе, чей рост превышает средний
Написать программу, которая определяет количество уче* ников в классе, чей рост превышает средний....

Массив: определить количество учеников в классе, чей рост превышает средний.
Написать программу , которая определяет количество учеников в классе , чей рост превышает средний.

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

11
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
21.09.2017, 13:25 2
qwer171, у меня на первый взгляд два замечания.
1)
Цитата Сообщение от qwer171 Посмотреть сообщение
sr = sum / size;
Зачем это в каждой итерации? Это нужно сделать после окончания цикла.

2)
Цитата Сообщение от qwer171 Посмотреть сообщение
if (sr==ar[i])
Так рост должен превышать средний или быть равным ему?
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 9
21.09.2017, 13:43  [ТС] 3
Спасибо за ответ,Тамика!
превышать , моя ошибка.
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
21.09.2017, 13:55 4
qwer171, а если хотите с заранее неизвестным количеством элементов, то нужно использовать контейнер... Типо такого
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
#include <iostream>
#include <vector>
 
int main()
{
    setlocale(LC_ALL, "RUSSIAN");
    const int size = 5;
    //float array[size], x, povtor = 0, sum = 0, average = 0;
    std::vector<int> vec;
    float average;
    int current = -1, sum = 0;
    std::cout << "*** Анализ роста учеников ***" << std::endl;
    std::cout << "Введите рост (см) и нажмите <Enter>." << std::endl;
    std::cout << "Для завершения введите 0 и нажмите <Enter>" << std::endl;
    std::cin >> current;
 
    while (current != 0)
    {
        vec.push_back(current);
        sum += current;
        std::cin >> current;
    }
    current = 0;
    average = float(sum) / float(vec.size());
    for (auto i : vec)
    {
        if (i > average)
        {
            ++current;
        }
    }
    std::cout << "Средний рост: " << average << " см" << std::endl;
    std::cout << "У " << current << " человек рост превышает средний." << std::endl;
    system("pause>nul");
}
0
6 / 6 / 7
Регистрация: 21.09.2017
Сообщений: 13
21.09.2017, 18:04 5
Лучший ответ Сообщение было отмечено qwer171 как решение

Решение

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
#include <iostream>
#include <vector>
 
// Точка входа
int main(int argc, char *argv[])
{
    // Поддержка русского языка в консоли
    setlocale(LC_ALL, "Russian");
 
    // Массив с ростом учеников в см
    std::vector<float> students;
 
    // Рост текущего ученика
    float growth = 0.0;
 
    // Сумма ростов
    float sum_growth = 0.0;
 
    // Средний рост
    float agv_growth = 0.0;
 
    // Количество человек, рост которых превышает средний
    unsigned int n = 0;
 
 
    // Сообщение пользователю после запуска программы
    std::cout << "*** Анализ роста учеников ***" << std::endl;
    std::cout << "Введите рост (см) и нажмите <Enter>." << std::endl;
    std::cout << "Для завершения введите 0 и нажмите <Enter>" << std::endl;
 
    // Получаем список ростов учеников от пользователя
    do
    {
        // Вводим рост ученика с клавиатуры
        std::cout << "-> ";
        std::cin >> growth;
 
        // Если пользователь не выбрал выход,
        // то добавляем рост в массив
        // и добавляем к общему росту
        if (growth > 0)
        {
            sum_growth += growth;
            students.push_back(growth);
        }
    } 
    while (growth > 0);
 
    // Проверим что пользователь ввел рост
    // хотя бы одного ученика
    if (students.size() == 0)
    {
        std::cout << "Вы не ввели рост ни одного ученика!" << std::endl;
        system("PAUSE");
        return 0;
    }
 
    // Вычисляем средний рост
    agv_growth = sum_growth / students.size();
 
    // Считаем учеников, чей рост выше среднего
    for (unsigned int i = 0; i < students.size(); i++)
    {
        if (students[i] > agv_growth)
        {
            n++;
        }
    }
 
    // Выводим результат
    std::cout << "Количество учеников: " << students.size() << std::endl;
    std::cout << "Средний рост: " << agv_growth << std::endl;
    std::cout << "У " << n << " человек рост превышает средний." << std::endl;
 
    system("PAUSE");
    return 0;
}
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 9
22.09.2017, 07:56  [ТС] 6
Тамика и V3cTOr, спасибо!Теперь попытаюсь решить сам , без библиотеки vector.

Добавлено через 33 минуты
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
void main()
{
    setlocale(LC_ALL, "Russian");
    const int size = 5;
    int ar[size], x, povtor = 0,sum=0;
    float sr = 0;
    cout << "*** Анализ роста учеников ***" << endl;
    cout << "Введите рост (см) и нажмите <Enter>." << endl;
    cout << "Для завершения введите 0 и нажмите <Enter>" << endl;
    for (int i = 0; i < size; i++)
    {
        cout << "-> ";
        cin >> ar[i];
        sum += ar[i];
    }
    sr = sum / size;
    for (int i = 0; i < size; i++)
    {
        if (ar[i] > sr)
        {
            povtor++;
        }
    }
    cout << "Средний рост: " << sr << " см" << endl;
    cout << "У " << povtor << " человек рост превышает средний." << endl;
}
Подскажите как введя ноль прекратить ввод?
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
22.09.2017, 09:05 7
qwer171, да сказали уже, что никак, если не использовать библиотеку вектор. Потому что для массивов нужно заранее знать количество элементов. Для вектора - не обязательно.
Разве что совсем тупо сделать - сделать массив размера INT_MAX и считать в цикле количество введённых элементов. Но это глупо.
0
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
22.09.2017, 09:17 8
Цитата Сообщение от Тамика Посмотреть сообщение
да сказали уже, что никак, если не использовать библиотеку вектор.
А вектор, что, внутри разве магией какой-то пользуется ?
Можно же и повторить этот алгоритм вручную, правда ведь?
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
22.09.2017, 09:20 9
DrOffset, ну-ну...
0
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
22.09.2017, 10:06 10
Цитата Сообщение от Тамика Посмотреть сообщение
ну-ну...
Ну вот, например, ручная реализация для ввода строки неизвестного заранее размера. Для чисел переделать элементарно. Не rocket science уж
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
22.09.2017, 10:08 11
DrOffset, думаю для ТС это будет сложновато.
0
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
22.09.2017, 10:11 12
Цитата Сообщение от Тамика Посмотреть сообщение
думаю для ТС это будет сложновато.
Если у него задание такое, то никуда он не денется - придется разбираться
Человек, которому я помогал в той теме, тоже не шибко опытен был, но к концу, тем не менее, разобрался.
0
22.09.2017, 10:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2017, 10:11
Помогаю со студенческими работами здесь

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

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

Количество учеников в классе чей рост превышает средний.
Нужна помощь с кнопками... В программу вводиться рост 6 учащихся программа выводит кол во учеников...

Определить количество учеников в классе, чей рост превышает средний
Написать программу, которая определяет кол-во учеников в классе, чей рост превышает средний


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

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