Среднее арифметическое

  • 8
  • Недоступна
Среднее арифметическое — это такое значение, которое часто используют в статистике. Средняя температура по больнице считается именно по формуле среднего арифметического. Мы подошли к ответственному моменту: напишем программу, в которой вводим с клавиатуры числа, суммируем их и считаем среднее, пока пользователь не введет число -1.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (332)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Михаил Кладовщик 80lvl
14 сентября, 08:17
while (sum - (sum += Double.parseDouble(br.readLine())) != 1) {
    count++;
}

System.out.println((sum + 1) / count);
Извращенцы одобрят
Mikhail Efimov
Уровень 17, Санкт-Петербург, Россия
29 августа, 17:39
Ммм, специально не хотел использовать подсказку и решал по другому, получилось через do-while сделать, прям эйфория от решения)))
DanYun
Уровень 14, Санкт-Петербург
29 августа, 08:57
Всем привет. Может кто мне объяснить в чём проблема? В результате я получаю 36.0 (что и есть правильный ответ), но он выдаёт сразу 3 ошибки, 2 из которых про то, что число должно быть вещественным... ХЗ почему моё решение ему не нравится. А 3-я ошибка это "Выведенный результат должен соответствовать заданию для любых входных данных." Тоже не совсем понимаю что он имеет в виду.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        int sum = 0;
        int count = 0;
        while (true)
        {
            int number = Integer.parseInt(reader.readLine());
            if (number == -1)
            {
                reader.close();
                System.out.println((double)(sum/count));
                break;
            }
            else {
                sum += number;
                count += 1;
            }
        }
Михаил Кладовщик 80lvl
14 сентября, 08:13
в 11 строке ты сначала производишь целочисленное деление, и только потом приведение к вещественному типу. То есть, если допустим делим 9 на 2 то будет 9 / 2 -> 4 -> 4.0 Надо каст делать перед делением, добавив к любому из чисел (т.к. приоритет у него больше, чем у деления)
System.out.println((double)(sum/count)); 👎
System.out.println((double) sum / count);👍
System.out.println(sum / (double) count);👍
Дима
Уровень 13, Новая Каховка, Украина
17 июня, 12:28
Народ, тут мне недавно рассказали про "debug" очень советую. Можно разобрать свой код по полочкам))) Жаль раньше не знал о нём) Вот статья на джавараше как это работает https://javarush.ru/quests/lectures/questsyntaxpro.level20.lecture04
Дима
Уровень 13, Новая Каховка, Украина
17 июня, 13:56
Кстати вот ссылка если кто-то делил int на int и хотел результат записать в double, но не получилось, вот тут всё написано про деление и т.п. https://javarush.ru/quests/lectures/questsyntaxpro.level04.lecture06
Marsian
Уровень 6, Россия
9 июня, 15:44
Не стоит эта задача лейбла "Hard", она на "Medium" еле тянет.
Сергей
Уровень 6, Оренбург, Россия
12 мая, 17:43
тут у многих главное проблемка получается в том что в циклах порядок не верный ставят сначала суммируется количество цифр а потом считается а надо на оборот пробуйте если к примеру циклом for делать примерно так if(a == -1){ считает среднее выводит break; } else { считает сумму } итого если поставить а!=-1 и поменять к примеру местами 1 выражение со вторым то в итоге считать будет вместе с -1! немножко сумбурно получилось. решение не выкладываю только подсказку
Zuri Bagomaeva
Уровень 18, Россия
3 мая, 17:42
обратите внимание на -1 не должно учитываться
Yolkovich покаещеназаводе
3 мая, 13:41
блин, вообще в упадке , картинка размыленная) главное все решил , а эта нонграта прям )
Роман
Уровень 5, Красноярск, Россия
22 апреля, 06:57
Написал вот так, но последний пункт не проходит "Выведенный результат должен соответствовать заданию для любых входных данных." Проверял много комбинаций и все они правильно считаются. Где я ошибся? Подскажите пожалуйста.
public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int a;
        double b = 0.0;
        int c = 0;
        while ((a = Integer.parseInt(reader.readLine())) != -1) {
            c += a;
            b++;
        }
        System.out.println(Math.abs(c / b));
    }
Maksym QA Automation Engineer
30 мая, 10:43
Math.abs не нужно
Эд
Уровень 8
13 апреля, 11:58
Округление до одного знака после запятой происходит автоматически, если в выражении участвует переменная с типом double