Найти минимум выше побочной и ниже побочной диагонали в квадратной матрице- Pascal(Паскаль)

program Project1;
 
const
  //Количество строк и столбцов.
  M = 7;
var
  Arr : array[1..M, 1..M] of Integer;
  i, j : Integer;
  Min1, Min2 : Integer;
  S : String;
begin
  //Для побочной диагонали соотношение индексов удовлетворяет условию:
  //i = M + 1 - j либо: j = M + 1 - i.
 
  repeat
    //Инициализируем генератор случайных чисел.
    Randomize;
    //Заполняем массив значениями и распечатываем его.
    for i := 1 to M do begin
      for j := 1 to M do begin
        if i = M + 1 - j then begin
          Arr[i, j] := 0; //Инициализируем нулями побочную диагональ.
        end else begin
          Arr[i, j] := 1 + Random(100); //Случайные числа из диапазона 1...100.
        end;
        if j > 1 then Write(', ');
        Write(Arr[i, j]:3);
      end;
      Writeln;
    end;
 
    //Ищем наименьшее значение, расположенное выше побочной диагонали
    //и наименьшее значение, расположенное ниже побочной диагонали.
    Min1 := Arr[1, 1];
    Min2 := Arr[M, M];
    for i := 1 to M do begin
      for j := 1 to M do begin
        if i + j < M + 1 then begin
          if Arr[i, j] < Min1 then Min1 := Arr[i, j]
        end else if i + j > M + 1 then begin
          if Arr[i, j] < Min2 then Min2 := Arr[i, j]
        end;
      end;
    end;
 
       //Показываем результат решения задачи.
    Writeln('Минимальное значение выше побочной диагонали: ', Min1);
    Writeln('Минимальное значение ниже побочной диагонали: ', Min2);
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
 
end.

Следующий вариант

program Project1;
 
const
  //Количество строк и столбцов.
  M = 7;
var
  Arr : array[1..M, 1..M] of Integer;
  i, j : Integer;
  Min1, Min2 : Integer;
  S : String;
begin
  //Для побочной диагонали соотношение индексов удовлетворяет условию:
  //i = M + 1 - j либо: j = M + 1 - i.
 
  repeat
    //Инициализируем генератор случайных чисел.
    Randomize;
    //Заполняем массив значениями и распечатываем его.
    for i := 1 to M do begin
      for j := 1 to M do begin
        if i = M + 1 - j then begin
          Arr[i, j] := 0; //Инициализируем нулями побочную диагональ.
        end else begin
          Arr[i, j] := 1 + Random(100); //Случайные числа из диапазона 1...100.
        end;
        if j > 1 then Write(', ');
        Write(Arr[i, j]:3);
      end;
      Writeln;
    end;
 
    
    //Ищем наименьшее значение, расположенное выше побочной диагонали.
    Min1 := Arr[1, 1];
    for i := 1 to M - 1 do
      for j := 1 to (M + 1 - i) - 1 do
        if Arr[i, j] < Min1 then
          Min1 := Arr[i, j];
    //Ищем наименьшее значение, расположенное ниже побочной диагонали.
    Min2 := Arr[M, M];
    for i := 1 + 1 to M do
      for j := (M + 1 - i) + 1 to M do
        if Arr[i, j] < Min2 then
          Min2 := Arr[i, j]
    ;
     
    //Показываем результат решения задачи.
    Writeln('Минимальное значение выше побочной диагонали: ', Min1);
    Writeln('Минимальное значение ниже побочной диагонали: ', Min2);
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
 
end.

Leave a Comment

28 + = 38