• На соревнованиях выступления спортсменов оценивает судейская бригада, которая может состоять из 3-х, 4-х или 5-ти человек. Каждый из судей показывает поставленную им оценку (вещественное число от 0 до 10). Если судей трое, то сначала считается средний балл из всех их оценок, потом отбрасывается оценка, наиболее отклоняющаяся от среднего, и итог получается как среднее из оставшихся (если максимальная и минимальная оценки одинаково отклоняются, то ответ - среднее всех трёх чисел). Если судей четверо или пятеро, то отбрасываются минимальная и максимальная оценки, а итог получается как среднее из оставшихся. По данному количеству судей и их оценкам найдите итоговый балл выступления, выведите его с точностью не менее 4 знаков после десятичной точки.

Ответы 1

  • // PascalABC.NET 3.3, сборка 1634 от 14.02.2018// Внимание! Если программа не работает, обновите версию!begin  var n:=ReadInteger('Количество судей:');  Assert(n.InRange(3,5),'Неверное количество судей, разрешено 3,4 или 5');  var a:=ReadArrReal('Введите оценки:',n);  if n>3 then Writeln('Балл ',a.OrderBy(t->t).ToArray[1:n-1].Average:0:4)  else begin    var m:=a.Average;    var b:=a.Select(t->(t,Abs(t-m))).OrderByDescending(t->t[1]).ToArray;    if Abs(b[0][1]-b[1][1])<1e-5 then Writeln('Балл ',m:0:4)    else Writeln('Балл ',b.Skip(1).Select(t->t[0]).Average:0:4)    endend.2. А в школах часто все еще учат писать так:var  a,d:array[1..5] of real;  n,i,imax,imin,j:integer;  s,avg:real;begin  Write('Количество судей: '); Read(n);  if (n<3) or (n>5) then    Writeln('Неверное количество судей, разрешено 3,4 или 5')  else begin    Write('Введите оценки: ');    for i:=1 to n do Read(a[i]);    if n>3 then begin      imax:=1; imin:=1;      for i:=2 to n do        if a[i]<a[imin] then imin:=i        else          if a[i]>a[imax] then imax:=i;      s:=0;      a[imax]:=0;      a[imin]:=0;      for i:=1 to n do s:=s+a[i];      avg:=s/(n-2);      Writeln('Балл ',avg:0:4)      end    else begin      s:=0;      for i:=1 to n do s:=s+a[i];      avg:=s/n;      for i:=1 to n do d[i]:=Abs(a[i]-avg);      for i:=1 to n-1 do        for j:=i+1 to n do          if d[i]<d[j] then begin            s:=d[i]; d[i]:=d[j]; d[j]:=s            end;      if Abs(d[1]-d[2])<1e-5 then Writeln('Балл ',avg:0:4)      else begin        s:=0;        for i:=1 to n do          if a[i]<>a[1] then s:=s+a[i];        avg:=s/(n-1);        Writeln('Балл ',avg:0:4)        end      end    endend.
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years