Предмет: Информатика, автор: sashashuman20

Напишите программу, которая в последовательности натуральных чисел находит среднее арифметическое двузначных чисел или сообщает, что таких чисел нет. Программа получает на вход натуральные числа, количество введённых чисел неизвестно, последовательность заканчивается числом 0 (0 – признак окончания ввода, не является членом последовательности). Количество чисел не превышает 100. Введённые числа не превышают 300. Программа должна вывести среднее арифметическое двузначных чисел или вывести NO, если таких чисел в последовательности нет.


FreeProgrammer: а какой ЯП?
sashashuman20: Pascal
kudlenkov303: Что бы написать приложение нужно потратить больше 10 дней или даже месяц.
Аноним: Чтобы написать школьное приложение обычно хватает пары минут.

Ответы

Автор ответа: FreeProgrammer
14
Замечание. Так как количество вводимых чисел заранее не известно, то откроем бесконечный цикл со всегда верным условием True, но как только будет введено число 0, остановим цикл командой break.

Программа:

program z;
var k,s,x:integer;
begin
k:=0;              {начальное значение количества двузначных чисел}
s:=0;              {начальное значение суммы двузначных чисел}
while True do  {открываем бесконечный цикл}
begin
readln(x);        {вводим число х}
if x=0 then break;  {если введенное число равно 0, то остановить цикл}
if (x>9)and(x<100) then  {если число двузначное, т.е. от 10 до 99} 
    begin 
    k:=k+1;         {количество увеличиваем на 1}
    s:=s+x;         {увеличиваем предыдущее значение суммы на число х}
    end;
end;
if k=0 then writeln('NO')  {если двузначных чисел не было, то вывод NO}
   else writeln(s/k);          {иначе вывод ср.арифметического}
end.
Автор ответа: Аноним
5
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018
Внимание! Если программа не работает, обновите версию!

begin
  var r:=ReadSeqIntegerWhile(t->t<>0).Where(t->t.Between(10,99))
      .DefaultIfEmpty.Average;
  (r>0 ? r.ToString : 'No').Println
end.
Похожие вопросы
Предмет: Английский язык, автор: yuliya5743