// 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) end end.
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 end end.
Const m=4; n=15; var i,j,j0: integer; a:array[1..m,1..n] of integer; jExit,iExit:Boolean; begin Randomize; for i:=1 to m do begin writeln; for j:=1 to n do begin a[i,j]:=random(2); write(a[i,j]:2) end end; writeln; j:=0; jExit:=false; repeat j:=j+1; i:=1; iExit:=false; if a[i,j]=0 then begin repeat i:=i+1; if a[i,j]<>0 then iExit:=true until iExit or (i=m); if i=m then jExit:=true end until jExit or (j=n); if a[i,j]=0 then writeln('Нулевой столбец ',j) else writeln('Нет нулевых столбцов'); end.
// Внимание! Если программа не работает, обновите версию!
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)
end
end.
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
end
end.
var
i,j,j0: integer;
a:array[1..m,1..n] of integer;
jExit,iExit:Boolean;
begin
Randomize;
for i:=1 to m do begin
writeln;
for j:=1 to n do begin
a[i,j]:=random(2);
write(a[i,j]:2)
end
end;
writeln;
j:=0; jExit:=false;
repeat
j:=j+1; i:=1; iExit:=false;
if a[i,j]=0 then begin
repeat
i:=i+1;
if a[i,j]<>0 then iExit:=true
until iExit or (i=m);
if i=m then jExit:=true
end
until jExit or (j=n);
if a[i,j]=0 then writeln('Нулевой столбец ',j)
else writeln('Нет нулевых столбцов');
end.
Тестовый пример:
0 1 1 1 1 0 1 0 1 0 0 0 0 0 1
0 0 1 0 1 0 0 0 1 1 0 0 0 0 0
1 1 0 0 0 1 0 1 1 1 1 1 0 1 1
1 1 1 0 1 0 1 0 0 1 0 1 0 1 0
Нулевой столбец 13