Для того, чтобы эта программа заработала надо добавить перед описанием процедуры F следующую строчку: procedure G(n: integer);forward; Так как в процедуре F есть вызов процедуры G описанной дальше по тексту программы. После исправления кода и запуска программы с F(12) получим 17 звездочек. По шагам это будет выглядеть так:
Вызов процедуры F и выполнение * n = 12 * n = 12 Вызов процедуры G и выполнение * n = 11 * n = 11 Вызов процедуры F и выполнение * n = 9 * n = 9 Вызов процедуры G и выполнение * n = 8 * n = 8 Вызов процедуры Fи выполнение * n = 6 * n = 6 Вызов процедуры G и выполнение * n = 5 * n = 5 Вызов процедуры F и выполнение * n = 3 * n = 3 Вызов процедуры G и выполнение * n = 2 * n = 2 Вызов процедуры F и выполнение * n = 0
1. var a:array [1..4, 1..4] of integer; i, j, max: integer; Begin for i := 1 to 4 do begin for j := 1 to 4 do read(a[i][j]); readln; end; max := a[1][1]; for i := 2 to 4 do if max < a[i][i] then max := a[i][i]; writeln(max); End.
2. var a:array [1..5, 1..5] of integer; i, j, m, sum: integer; Begin for i := 1 to 5 do begin for j := 1 to 5 do read(a[i][j]); readln; end; readln(m); sum := 0; for i := 1 to 5 do if (m - i > 0) and (m - i < 6) then sum := sum + a[i][m - i]; writeln(sum); End.
3. Const N = 5; var a:array [1..N, 1..N] of integer; i, j, max: integer; Begin for i := 1 to N do begin for j := 1 to N do read(a[i][j]); readln; end; max := a[1][N]; for i := 2 to N do if (max < a[i][N + 1 - i]) then max := a[i][N + 1 - i]; writeln(max); End.
4. Const N = 5; var a:array [1..N, 1..N] of integer; i, j, count: integer; sum: real; Begin for i := 1 to N do begin for j := 1 to N do read(a[i][j]); readln; end; sum := 0; count := 0; for i := 1 to N do if (a[5][i] mod 2 = 1) then begin sum := sum + a[5][i]; inc(count); end; sum := sum / count; writeln(sum); End.
5. var a:array [1..4, 1..4] of integer; i, j, upper_sum, lower_sum: integer; Begin for i := 1 to 4 do begin for j := 1 to 4 do read(a[i][j]); readln; end; upper_sum := 0; lower_sum := 0; for i := 1 to 4 do begin for j := i + 1 to 4 do upper_sum := upper_sum + a[i][j]; for j := 1 to i - 1 do lower_sum := lower_sum + a[i][j]; end; writeln(upper_sum); writeln(lower_sum); End.
procedure G(n: integer);forward;
Так как в процедуре F есть вызов процедуры G описанной дальше по тексту программы.
После исправления кода и запуска программы с F(12) получим 17 звездочек. По шагам это будет выглядеть так:
Вызов процедуры F и выполнение
* n = 12
* n = 12
Вызов процедуры G и выполнение
* n = 11
* n = 11
Вызов процедуры F и выполнение
* n = 9
* n = 9
Вызов процедуры G и выполнение
* n = 8
* n = 8
Вызов процедуры Fи выполнение
* n = 6
* n = 6
Вызов процедуры G и выполнение
* n = 5
* n = 5
Вызов процедуры F и выполнение
* n = 3
* n = 3
Вызов процедуры G и выполнение
* n = 2
* n = 2
Вызов процедуры F и выполнение
* n = 0
var a:array [1..4, 1..4] of integer; i, j, max: integer;
Begin
for i := 1 to 4 do
begin
for j := 1 to 4 do
read(a[i][j]);
readln;
end;
max := a[1][1];
for i := 2 to 4 do
if max < a[i][i] then max := a[i][i];
writeln(max);
End.
2.
var a:array [1..5, 1..5] of integer; i, j, m, sum: integer;
Begin
for i := 1 to 5 do
begin
for j := 1 to 5 do
read(a[i][j]);
readln;
end;
readln(m);
sum := 0;
for i := 1 to 5 do
if (m - i > 0) and (m - i < 6) then
sum := sum + a[i][m - i];
writeln(sum);
End.
3.
Const N = 5;
var a:array [1..N, 1..N] of integer; i, j, max: integer;
Begin
for i := 1 to N do
begin
for j := 1 to N do
read(a[i][j]);
readln;
end;
max := a[1][N];
for i := 2 to N do
if (max < a[i][N + 1 - i]) then
max := a[i][N + 1 - i];
writeln(max);
End.
4.
Const N = 5;
var a:array [1..N, 1..N] of integer; i, j, count: integer; sum: real;
Begin
for i := 1 to N do
begin
for j := 1 to N do
read(a[i][j]);
readln;
end;
sum := 0;
count := 0;
for i := 1 to N do
if (a[5][i] mod 2 = 1) then
begin
sum := sum + a[5][i];
inc(count);
end;
sum := sum / count;
writeln(sum);
End.
5.
var a:array [1..4, 1..4] of integer; i, j, upper_sum, lower_sum: integer;
Begin
for i := 1 to 4 do
begin
for j := 1 to 4 do
read(a[i][j]);
readln;
end;
upper_sum := 0;
lower_sum := 0;
for i := 1 to 4 do
begin
for j := i + 1 to 4 do
upper_sum := upper_sum + a[i][j];
for j := 1 to i - 1 do
lower_sum := lower_sum + a[i][j];
end;
writeln(upper_sum);
writeln(lower_sum);
End.