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

котик926 котик926    3   25.09.2019 07:10    91

Ответы
Федёк5 Федёк5  02.05.2020 01:29
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.
ПОКАЗАТЬ ОТВЕТЫ
akashiabdullinoxx2p3 akashiabdullinoxx2p3  02.05.2020 01:29
Замечание. Так как количество вводимых чисел заранее не известно, то откроем бесконечный цикл со всегда верным условием 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.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика