Правильно ли все решено и как можно было упростить программу? - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Напишите программу, которая в последовательности натуральных чисел находит среднее арифметическое чисел, кратных 8, или со*об*ща*ет, что таких чисел нет (вы*во*дит «NO»). Про*грам*ма по*лу*ча*ет на вход на*ту*раль*ные числа, ко*ли*че*ство введённых чисел не*из*вест*но,по*сле*до*ва*тель*ность чисел за*кан*чи*ва*ет*ся чис*лом 0 (0 – при*знак окон*ча*ния ввода, не вхо*дит в по*сле*до*ва*тель*ность). Ко*ли*че*ство чисел не пре*вы*ша*ет 100. Введённые числа не пре*вы*ша*ют 300. Про*грам*ма долж*на вы*ве*сти сред*нее ариф*ме*ти*че*ское чисел, крат*ных 8, или вы*ве*сти «NO», если таких чисел нет. Зна*че*ние вы*во*дить с точ*но*стью до де*ся*тых. Вход*ные дан*ные: 8 122 64 16 0 Выходные: 29,3

Решение задачи: «Правильно ли все решено и как можно было упростить программу?»

textual
Листинг программы
var x, i, cym:integer; sr:real;
begin
cym:=0;
i:=0;
readln(x);
while x <> 0 do 
begin
if (x mod 8=0) then begin 
i:= i + 1;
cym:= cym + x;
end;
readln(x);
end;
sr:=cym/i;
if i=0 then
writeln('NO')
else
writeln(sr:5:1);
end.

Объяснение кода листинга программы

  1. Объявлены следующие переменные: x, i, cym (тип integer), sr (тип real).
  2. Инициализируется переменная cym значением 0, переменная i значением 0.
  3. Вводится значение переменной x с помощью функции readln.
  4. Запускается цикл while, который будет выполняться до тех пор, пока значение переменной x не станет равным 0.
  5. Внутри цикла проверяется, делится ли значение переменной x на 8 без остатка. Если да, то выполняется блок кода:
    • значение переменной i увеличивается на 1.
    • значение переменной cym увеличивается на значение переменной x.
  6. После выполнения цикла while вводится новое значение переменной x.
  7. После окончания цикла while выполняется блок кода:
    • значение переменной sr вычисляется как результат деления значения переменной cym на значение переменной i.
    • если значение переменной i равно 0, то выводится сообщение NO.
    • иначе выводится значение переменной sr, округленное до 5 знаков после запятой.
  8. Код завершается.

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы