Const N = 3; M = 4; Type Mass = array[1..N,1..M] of integer; ///Функция вычисления среднего арифметического элементов массива Function Sr(A:Mass):real; Var i,j:integer; Begin result:=0; For i:= 1 to N do For j:= 1 to M do result:=result+A[i,j]; result:=result/(M*N); End;
Var A:Mass; B:array[1..N,1..M-1] of integer; i,j,jMax,k:integer; S,MaxS:real; Begin Randomize; WriteLn('Исходная матрица:'); For i:= 1 to N do Begin For j:= 1 to M do Begin A[i,j]:=random(21)-10; Write(A[i,j]:3,' ') End; WriteLn End; WriteLn('Среднее арифметическое её элементов: ',Sr(A)); WriteLn; MaxS:=0; jMax:=1; For i:= 1 to N do MaxS:=MaxS+A[i,1]; For j:= 2 to M do Begin S:=0; For i:= 1 to N do S:=S+A[i,j]; if S > MaxS then Begin jMax:=j; MaxS:=S; End; End; k:=0; For j:= 1 to M do if jMax <> j then Begin k:=k+1; For i:= 1 to N do B[i,k]:=A[i,j]; End; WriteLn('Новая матрица:'); For i:= 1 to N do Begin For j:= 1 to M-1 do Write(B[i,j]:3,' '); WriteLn End; End.
N = 3;
M = 4;
Type
Mass = array[1..N,1..M] of integer;
///Функция вычисления среднего арифметического элементов массива
Function Sr(A:Mass):real;
Var
i,j:integer;
Begin
result:=0;
For i:= 1 to N do
For j:= 1 to M do
result:=result+A[i,j];
result:=result/(M*N);
End;
Var
A:Mass;
B:array[1..N,1..M-1] of integer;
i,j,jMax,k:integer;
S,MaxS:real;
Begin
Randomize;
WriteLn('Исходная матрица:');
For i:= 1 to N do
Begin
For j:= 1 to M do
Begin
A[i,j]:=random(21)-10;
Write(A[i,j]:3,' ')
End;
WriteLn
End;
WriteLn('Среднее арифметическое её элементов: ',Sr(A));
WriteLn;
MaxS:=0;
jMax:=1;
For i:= 1 to N do
MaxS:=MaxS+A[i,1];
For j:= 2 to M do
Begin
S:=0;
For i:= 1 to N do
S:=S+A[i,j];
if S > MaxS then
Begin
jMax:=j;
MaxS:=S;
End;
End;
k:=0;
For j:= 1 to M do
if jMax <> j then
Begin
k:=k+1;
For i:= 1 to N do
B[i,k]:=A[i,j];
End;
WriteLn('Новая матрица:');
For i:= 1 to N do
Begin
For j:= 1 to M-1 do
Write(B[i,j]:3,' ');
WriteLn
End;
End.
Пример работы программы:
Исходная матрица:
10 6 10 2
3 5 -3 8
8 2 0 -9
Среднее арифметическое её элементов: 3.5
Новая матрица:
6 10 2
5 -3 8
2 0 -9
Объяснение:
procedure F(n: integer);
begin
if n>0 then begin
Write (n);
F(n-2);
F(n div 4);
end
end;
begin
F(9);
end.
На выходе будет 97531112
Если нужна трассировка, её можно сделать примерно так:
procedure F(n: integer);
begin
Writeln('Вход');
if n>0 then begin
Writeln ('В выходную строку: ',n);
Writeln('Вызов F(n-2)');
F(n-2);
Writeln('Вызов F(n div 4)');
F(n div 4);
end;
Writeln('Выход')
end;
begin
F(9);
end.
Результат трассировки:
Вход
В выходную строку: 9
Вызов F(n-2)
Вход
В выходную строку: 7
Вызов F(n-2)
Вход
В выходную строку: 5
Вызов F(n-2)
Вход
В выходную строку: 3
Вызов F(n-2)
Вход
В выходную строку: 1
Вызов F(n-2)
Вход
Выход
Вызов F(n div 4)
Вход
Выход
Выход
Вызов F(n div 4)
Вход
Выход
Выход
Вызов F(n div 4)
Вход
В выходную строку: 1
Вызов F(n-2)
Вход
Выход
Вызов F(n div 4)
Вход
Выход
Выход
Выход
Вызов F(n div 4)
Вход
В выходную строку: 1
Вызов F(n-2)
Вход
Выход
Вызов F(n div 4)
Вход
Выход
Выход
Выход
Вызов F(n div 4)
Вход
В выходную строку: 2
Вызов F(n-2)
Вход
Выход
Вызов F(n div 4)
Вход
Выход
Выход
Выход