Всем Привет! Люди добрые помогите решением. Первую задачу отправил на проверку Спасибо!!! Сейчас вторая. В матрице A(m x m) найти сумму элементов четных столбцов. Если эта сумма положительна, то все элементы нечетных строк возвести в квадрат. В противном случае ко всем элементам побочной диагонали прибавить число 2.
Ответы
program Task;
const
M = 3;
var
a: array[1..M, 1..M] of integer;
i, j: integer;
sum: integer;
result: real;
begin
{ Заполняем переменные }
sum := 0;
result := 0.0;
writeln('----------------------------------');
{ Заполняем массив случайным набором элементов }
for i:=1 to M do
begin
for j:=1 to M do
begin
a[i,j] := random (40)-20;
write(a[i,j]:4);
end;
writeln();
end;
{ Считаем количество элементов }
for i:=1 to M do
for j:=1 to M do
sum := sum + a[i,j];
writeln('Sum: ',sum);
{ Если количество элементов > 0 - выполняем возведение в квадрат }
if (sum > 0) then
for i:=1 to ((M div 2) + (m mod 2)) do
for j:=1 to M do
a[i*2-1,j] := a[i*2-1,j]*a[i*2-1,j]
{ Иначе - увеличиваем элементы побочной диагонали на 2 }
else
for i:=1 to M do
a[M-i+1,i] := a[M-i+1,i] + 2;
for i:=1 to M do
begin
for j:=1 to M do
write(a[i,j]:4);
writeln();
end;
writeln('----------------------------------');
end.
{*
Пример результатов:
----------------------------------
9 5 12
-9 -2 -15
-4 19 -4
Sum: 11
81 25 144
-9 -2 -15
16 361 16
----------------------------------
----------------------------------
7 2 13
-16 -3 17
-10 -16 3
Sum: -3
7 2 15
-16 -1 17
-8 -16 3
----------------------------------
*}
Тоже самое, но менее развёрнуто:
program Task;
const
M = 3;
var
a: array[1..M, 1..M] of integer;
i, j: integer;
sum: integer;
result: real;
begin
sum := 0;
result := 0.0;
for i:=1 to M do
for j:=1 to M do
a[i,j] := random (40)-20;
for i:=1 to M do
for j:=1 to M do
sum := sum + a[i,j];
if (sum > 0) then
for i:=1 to ((M div 2) + (m mod 2)) do
for j:=1 to M do
a[i*2-1,j] := a[i*2-1,j]*a[i*2-1,j]
else
for i:=1 to M do
a[M-i+1,i] := a[M-i+1,i] + 2;
end.