e-olymp 910. Среднее арифметическое положительных

Задача

Задана последовательность вещественных чисел. Найти среднее арифметическое положительных чисел.

Входные данные

В первой строке задано количество чисел $n$ ($0 < n ≤ 100$). В следующей строке заданы $n$ действительных чисел, значения которых не превосходят по модулю $100$.

Выходные данные

Вывести среднее арифметическое положительных чисел с двумя десятичными знаками. В случае отсутствия положительных чисел вывести сообщение $Not$ $Found$.

Тесты

Входные данные Выходные данные
3
5.2 -2 4
4.60
3
-5.2 -2 -4
Not Found
5
16 -78 56 1 -3
24.33
1
17.33
17.33
1
-17.33
Not Found

Код программы

Решение

В начале читаем из потока общее количество чисел n . Затем с помощью цикла остальные числа, одновременно проверяя положительные ли они. Если число положительное, то прибавляем его к общей сумме и увеличиваем счетчик k++ . В конце s!=0 означает, что в потоке есть хотя бы одно положительное число — тогда мы высчитываем и выводим $\frac{s}{k}$ с двумя знаками после запятой. В противном случае — $Not$ $Found$.

Код программы (Тернарная операция)

Решение

Для вывода ответа с помощью тернарной операции необходимо, чтобы выходные данные были одного типа. Используем метод to_string, предварительно округлив $s$ до двух знаков после запятой. Так как при использовании метода  double переводится с шестью знаками после запятой, то используем erase, чтобы удалить лишние четыре.

Ссылки

Условие задачи на E-olymp

Код программы на IdeOne (1)

Код программы на IdeOne (2)

 

Related Images:

8 thoughts on “e-olymp 910. Среднее арифметическое положительных

    • Логическая переменная там и правда не нужна. Объявление переменных тоже исправила.

    • Вы пишите (s>0)? cout << fixed << setprecision(2) << s/k : cout << "Not Found";. Такое использование тернарной операции сработает, но не поощряется. По такой схеме используют условный оператор. Необходимо так: cout << (...? ... : ...)
    • Это не С++, но тоже язык — стоит выяснить «с потока» или «из потока» вы читаете.
    • Зачем название писать два раза?
    • Лексику и название исправила. Про тернарную операцию — спасибо, буду знать.

    • Про тернарную операцию я написал не просто, чтобы Вы знали. Просто, чтобы знали я на лекции говорил. Здесь нужно прямо взять и исправить код.
      И отступы сделать как положено.

    • Все исправила, спасибо за замечания.

Добавить комментарий