Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения -1000 до 1000. Необходимо вывести среднее арифметическое тех элементов массива,которые по своему значению меньше последнего элемента этого массива.
// PascalABC.NET 3.2, сборка 1472 от 08.06.2017 // Внимание! Если программа не работает, обновите версию!
begin var a:=ArrRandom(30,-1000,1000); a.Println; var s:=a.Where(x->x<a.Last); if s.Count>0 then Writeln('Ср.арифм. отобранных равно ',s.Average:0:5) else Writeln('Последний элемент минимален') end.
const n=30; var a:array[1..n] of integer; i,s,k:integer; begin Randomize; for i:=1 to n do begin a[i]:=Random(2001)-1000; Write(a[i],' ') end; s:=0; k:=0; for i:=1 to n-1 do if a[i]<a[n] then begin s:=s+a[i]; k:=k+1 end; Writeln; if k>0 then Writeln('Ср.арифм. отобранных равно ',s/k:0:5) else Writeln('Последний элемент минимален') end.
Answers & Comments
// PascalABC.NET 3.2, сборка 1472 от 08.06.2017
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(30,-1000,1000); a.Println;
var s:=a.Where(x->x<a.Last);
if s.Count>0 then Writeln('Ср.арифм. отобранных равно ',s.Average:0:5)
else Writeln('Последний элемент минимален')
end.
Пример
-481 170 -688 158 45 474 739 -704 380 -589 -733 410 -117 157 -541 459 -332 786 -85 -486 414 -271 -364 -96 -961 -338 -142 871 -278 691
Ср.арифм. отобранных равно -174.57692
2. Так обычно учат на школьной информатике
const
n=30;
var
a:array[1..n] of integer;
i,s,k:integer;
begin
Randomize;
for i:=1 to n do begin
a[i]:=Random(2001)-1000;
Write(a[i],' ')
end;
s:=0;
k:=0;
for i:=1 to n-1 do
if a[i]<a[n] then begin
s:=s+a[i];
k:=k+1
end;
Writeln;
if k>0 then Writeln('Ср.арифм. отобранных равно ',s/k:0:5)
else Writeln('Последний элемент минимален')
end.
Пример
279 397 -770 -405 -731 122 538 239 -298 -727 952 -191 -868 695 529 -147 -845 713 -193 -333 631 552 -355 -690 243 428 -366 -119 -811 140
Ср.арифм. отобранных равно -454.52941