Найти среднее арифметическое целых чисел в типизированном файле (file of integer), разница наибольшей и наименьшей цифр которых меньше 5. Если таких чисел нет, то результат- ноль. функция принимает в качестве параметра имя файла Name FUNCTION P(NAME:STRING):DOUBLE;

Вопрос школьника по предмету Информатика

Найти среднее арифметическое целых чисел в типизированном файле (file of integer), разница наибольшей и наименьшей цифр которых меньше 5. Если таких чисел нет, то результат- ноль. функция принимает в качестве параметра имя файла Name FUNCTION P(NAME:STRING):DOUBLE;

Ответ учителя по предмету Информатика

// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

function IsGood(Self:integer):boolean; extensionmethod;
begin
  (var max,var min,var n):=(0,9,abs(Self));
  while n>0 do begin
    var d:=n mod 10;
    if d>max then max:=d;
    if d<min then min:=d;
    n:=n div 10
    end;
  Result:=max-min<5
end;

function P(name:string):double;
begin
  Result:=ReadElements&<integer>(name).Where(n->n.IsGood).Average
end;
 
begin
  Writeln(‘Среднее арифметическое равно ‘,P(ReadlnString(‘Имя файла:’)))
end.

Пример

Имя файла: integers.pas

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Похожие вопросы от пользователей