@Nikitos2002

Сумма элементов массива, больших среднего — С++ Как решить?

Вот, собственно, сама задача:

Вам дается n натуральных чисел. Найти сумму чисел, которые больше среднего. Если таких чисел нет, то их сумма 0.

Формат входных данных
Сначала идет число n. Затем n строк, содержащих по одному натуральному числу.

Формат выходных данных
Одно число — ответ на задачу.

Примеры
Ввод
5
1
2
3
4
5
Вывод
9

Мой код:
#include <iostream>
#include <ciso646>
using namespace std;

int main()
{
    int n;
    int A[10000] = {0};
    cin >> n;
    for(int i = 0; i < n; i++)
    {
        cin >> A[i];
    }
    bool is_sorted = false;
    int tmp = 0;
    while (not is_sorted)
    {
        is_sorted = true;
        int i = 0;
        while (i < n-1)
        {
            if (A[i] > A[i+1])
            {
                is_sorted = false;
                tmp = A[i];
                A[i] = A[i+1];
                A[i+1] = tmp;
            }
            i++;
        }
    }
    int middle = A[n / 2];
    int sum = 0;
    for(int j = n / 2 + 1; j < n; j++)
    {  
        if (A[j] > middle)
            sum += A[j];
    }
    cout << sum;
    return 0;
}



Проходит 3 из 5 тестов: или допустил ошибку в программе, или неправильно понял задачу. Помогите, пожалуйста, решить
  • Вопрос задан
  • 1034 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Судя по условию, надо считать среднее арифметическое, а вы ищите медиану.

Надо вместо сортировки тупо просуммировать все числа и поделить на их количество (округлите вниз).

Ну и, не забудьте в конце цикл гнать по всем элементам а не от середины.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@WaterSmith
Android-разработчик. Java, Kotlin
Среднее это сумма чисел деленная на их количество. У вас в коде медиана. Потому и не проходит тесты.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы