Загрузка данных


program VisualRandomMatch;

const N = 8;

type
  TMatrix = array[1..N, 1..N] of integer;
  TArray = array[1..N] of boolean;

{ --- 1. ПРОЦЕДУРА --- }
procedure GetMatches(M: TMatrix; var Res: TArray);
var k, j: integer;
begin
  for k := 1 to N do begin
    Res[k] := True;
    for j := 1 to N do
      if M[k, j] <> M[j, k] then Res[k] := False;
  end;
end;

{ --- 2. ФУНКЦИЯ --- }
function GetSum(M: TMatrix): integer;
var i, j, RowSum, Total: integer; HasMinus: boolean;
begin
  Total := 0;
  for i := 1 to N do begin
    RowSum := 0; HasMinus := False;
    for j := 1 to N do begin
      RowSum := RowSum + M[i, j];
      if M[i, j] < 0 then HasMinus := True;
    end;
    if HasMinus then Total := Total + RowSum;
  end;
  GetSum := Total;
end;

{ --- ГЛАВНАЯ ПРОГРАММА --- }
var
  A: TMatrix;
  Res: TArray;
  i, j, randK: integer;

begin
  Randomize;
  
  { Заполняем фон матрицы обычными числами от -5 до 5 }
  for i := 1 to N do
    for j := 1 to N do
      A[i, j] := Random(11) - 5;

  { Выбираем СЛУЧАЙНЫЙ индекс k (от 1 до 8) }
  randK := Random(N) + 1;
  
  { Делаем k-ю строку и k-й столбец одинаковыми! }
  { Чтобы это было видно, заполним их двузначными числами }
  for i := 1 to N do begin
    A[randK, i] := Random(90) + 10; { Генерируем число от 10 до 99 }
    A[i, randK] := A[randK, i];     { Копируем его и в строку, и в столбец }
  end;

  { Выводим матрицу на экран }
  writeln('Случайная матрица:');
  for i := 1 to N do begin
    for j := 1 to N do write(A[i, j]:4);
    writeln;
  end;
  writeln;

  { Выполняем 1 задание }
  GetMatches(A, Res);
  write('Совпадают (индексы): ');
  for i := 1 to N do if Res[i] then write(i, ' ');
  writeln;

  { Выполняем 2 задание }
  writeln('Сумма строк с минусами: ', GetSum(A));
  
  readln;
end.