Всем Привет! Люди добрые помогите решением. Первую задачу отправил ** проверку Спасибо!!!...

0 голосов
21 просмотров

Всем Привет! Люди добрые помогите решением. Первую задачу отправил на проверку Спасибо!!! Сейчас вторая. В матрице A(m x m) найти сумму элементов четных столбцов. Если эта сумма положительна, то все элементы нечетных строк возвести в квадрат. В противном случае ко всем элементам побочной диагонали прибавить число 2.


Информатика (22 баллов) | 21 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

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.

(290 баллов)