<em>Алгоритм решения предполагает, что если в массиве не будет найдено элемента, большего 10, то позиции этого элемента не существует и средние арифметические членов, располагающихся как после этой позиции, так и до нее, тоже не могут существовать.</em>
<u><em>"Современное решение"</em></u>
// PascalABC.NET 3.0, сборка 1076
begin
var n:=ReadInteger('Количество элементов в массиве: ');
var x:=ArrRandom(n,-20,20);
Writeln('Массив Х'); x.Println;
Write('Ср. арифм. отрицательных элементов после первого, большего 10: ');
var a1:=x.SkipWhile(x->x<=10).Where(x->x<0);
if a1.Count=0 then Writeln('пусто')
else Writeln(a1.Average);
Write('Ср. арифм. всех элементов до первого, большего 10: ');
a1:=x.TakeWhile(x->x<=10);
if a1.Count=0 then Writeln('пусто')
else Writeln(a1.Average)
end.
<em><u>Тестовые просчеты:</u></em>
Количество элементов в массиве: 15
Массив Х
-11 11 16 -7 11 -8 10 -16 15 -15 -10 -8 -6 -13 -17
Ср. арифм. отрицательных элементов после первого, большего 10: -11.1111111111111
Ср. арифм. всех элементов до первого, большего 10: -11
Количество элементов в массиве: 13
Массив Х
14 -9 1 2 12 -15 0 16 -19 16 -11 -15 -12
Ср. арифм. отрицательных элементов после первого, большего 10: -13.5
Ср. арифм. всех элементов до первого, большего 10: пусто
Количество элементов в массиве: 5
Массив Х
-11 2 0 15 7
Ср. арифм. отрицательных элементов после первого, большего 10: пусто
Ср. арифм. всех элементов до первого, большего 10: -3
Количество элементов в массиве: 3
Массив Х
15 10 8
Ср. арифм. отрицательных элементов после первого, большего 10: пусто
Ср. арифм. всех элементов до первого, большего 10: пусто
<u><em>"Школьный вариант решения"</em></u>
// PascalABC.NET 3.0, сборка 1076
const
nmax=50; { максимальное кол-во элементов }
var
i,n,p,s1,s2,k2:integer;
x:array[1..nmax] of integer;
begin
Write('Количество элементов в массиве: '); Read(n);
Randomize;
Writeln('Массив Х');
p:=0;
for i:=1 to n do begin
x[i]:=Random(41)-20;
Write(x[i],' ');
if p=0 then
if x[i]>10 then p:=i;
end;
Writeln;
Write('Ср. арифм. отрицательных элементов после первого, большего 10: ');
if p=0 then Writeln('пусто')
else begin
s2:=0; k2:=0;
for i:=p+1 to n do
if x[i]<0 then begin s2:=s2+x[i]; Inc(k2) end;
if k2=0 then Writeln('пусто')
else Writeln(s2/k2)
end;
Write('Ср. арифм. всех элементов до первого, большего 10: ');
if p=0 then Writeln('пусто')
else begin
s1:=0;
for i:=1 to p-1 do s1:=s1+x[i];
Writeln(s1/(p-1))
end
end.
<em>Этот вариант существенно длиннее, но главное, что нужно долго вглядываться в текст программы, чтобы понять, что именно она делает.</em>
<h2>Заменить нечётные элементы по значению</h2>
program raf105;
var
a:array[1..20] of integer;
i,min: integer;
begin
min:= 10000;
writeln('Исходный массив:');
for i:=1 to 20 do
begin
a[i]:= random(-30,20);
writeln(a[i]);
if a[i]<min
then min:= a[i];
end;
writeln('Изменённый массив:');
for i:=1 to 20 do
begin
if (a[i] mod 2)<>0
then a[i]:= min;
writeln(a[i]);
end;
end.
<h2>Заменить нечётные элементы по индексу</h2>
program raf105;
var
a:array[1..20] of integer;
i,min: integer;
begin
min:= 10000;
writeln('Исходный массив:');
for i:=1 to 20 do
begin
a[i]:= random(-30,20);
writeln(a[i]);
if a[i]<min
then min:= a[i];
end;
writeln('Изменённый массив:');
for i:=1 to 20 do
begin
if (i mod 2)<>0
then a[i]:= min;
writeln(a[i]);
end;
end.
<h3><em><u>Язык PascalABC</u></em></h3>
1 : наливаем воду в 4 литровый сосуд
2 : выливаем из 4 в 5
3: набираем еще один 4л сосуд и сливаем из 4 в 5 под завязку
5. Таким образом имеем 3 литра в 4л сосуде
4: Освобождаем 5л сосуд и сливаем в него воду из 4л. Таким
образом имеем пустой 4л сосуд и 3 литра воду в 5л емкости.
5: набираем полный 4л сосуд и сливаем в 5л емкость(в которой
уже 3 литра). В итоге у нас остается 2 литра воды в 4 литровом сосуде.
Var i, n, sum: integer;
begin
writeln('Введите степень');
read(n);
sum := 1;
for i := 1 to n do
sum := sum * 9;
writeln(sum);
end.