0
0

В примере по вычислению среднего арифметического от 0 до 100 дан неверный код, который приводит к неверному результату.

Ср.арифметическое (1+2+3+...+100) / 100 = 50.5, а не 50.0, как в уроке (можете проверить ручками или он-лайн калькулятором).

Ошибка состоит в том, что при последнем проходе цикла в значении count = 100 после последнего суммирования count инкрементируется еще раз и на выходе из цикла его значение = 101.

Исправить это можно только отняв лишнюю единицу уже при вычислении итогового результата, потому как, меняя условие на строгое неравенство, мы получаем на выходе правильный count, но недосчитанную на последнее число 100 sum.

Ну или вводом дополнительного условия внутри цикла с break, но это лишний объем кода.

Есть еще варианты?

public class Loop {
public static void main(String[] args) {
int sum = 0;
int count = 1;
while (count <= 100) {
sum += count;
count++;
} 
float result = sum / (float) (count - 1);
System.out.println(result);
}
}

Lelya Ya
4 years ago






Привет, не помню в деталях эту задачу когда проходил, но если задача стоит как вычисление среднего арифметического от 0 до 100 - то здесь 101 число получается 0,1,2,3,...,100, соответвенно и сумму всех чисел делить надо не на 100 как у вас, а на 101. Или что-то я не так понял/прочитал...?

Pavel Lazarev
4 years ago

Привет! Спасибо за ответ, да, это я наоборот не учла, что 0 как слагаемое хоть ничего не добавляет к сумме, но как элемент учитывается все равно и даже в ряде 0+0+1 придется делить на 3 элемента.

Lelya Ya
4 years ago

2 ответов