В квадратной целочисленной матрице найти максимумы образованных диагоналями областей, упорядочить их - Pascal

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста. Сам в программировании нуб, но надо написать программу в Pascal. Дана квадратная матрица А из целых чисел. 1. Она разбита по диагоналям на четыре области: север, юг, восток, запад. Считается, что элементы по диагонали не принадлежат этим областям. Найдите максимальный элемент каждой области. 2. Найденные элементы вывести в порядке убывания. Для отладки программы исходную матрицу сформировать с помощью генератора случайных чисел. Спасайте ребятки...

Решение задачи: «В квадратной целочисленной матрице найти максимумы образованных диагоналями областей, упорядочить их»

textual
Листинг программы
program SWEN_Matrix;
//работает для матриц с размером более чем 2: MxN, M > 2 и N > 2.
 
var
  Ar : array [1..5, 1..5] of Integer;
  MaxSWEN : array [1..4] of Integer;
  tmpValue : Integer;
  tmpIndex : Word;
  i, g : Word;
  
begin
  //формируем и выводим матрицу
  randomize;
  for i := 1 to 5 do
    begin
      for g := 1 to 5 do
        begin
          Ar[i][g] := floor(random()*100);
          write (Ar[i][g]:3, ' ');
        end;
      writeln;
    end;
  writeln;
  
  //инициализируем максимумы
  MaxSWEN[1] := Ar[1][2];   //S
  MaxSWEN[2] := Ar[2][1];   //W
  MaxSWEN[3] := Ar[2][5];   //E
  MaxSWEN[4] := Ar[5][2];   //N
  
  for i := 1 to 5 do
    for g := 1 to 5 do
      begin
        //первым делом исключаем из обработки элементы диагоналей
        if (i = g) or ( i = 5 - g +1)
        then continue;
        
        //распознаём область
        {* S *
         W * E
         * N *}
        //S
        if (i < g) and (i < 5 - g +1)
        then if (Ar[i][g] > MaxSWEN[1])
             then MaxSWEN[1] := Ar[i][g];
        
        //W
        if (i > g) and (i < 5 - g +1)
        then if (Ar[i][g] > MaxSWEN[2])
             then MaxSWEN[2] := Ar[i][g];
             
        //E
        if (i < g) and (i > 5 - g +1)
        then if (Ar[i][g] > MaxSWEN[3])
             then MaxSWEN[3] := Ar[i][g];
             
        //N
        if (i > g) and (i > 5 - g +1)
        then if (Ar[i][g] > MaxSWEN[4])
             then MaxSWEN[4] := Ar[i][g];             
      end;
      
  //контрольная строка: показываем,что правильно нашли элементы в этих секторах
  for i := 1 to 4 do
    write (MaxSWEN[i], ' ');
  writeln;
  
  //сортировка
  for i := 1 to 3 do
    begin
      tmpIndex := i;
      for g := i + 1 to 4 do
        if MaxSWEN[g] > MaxSWEN[tmpIndex]
        then tmpIndex := g;
      
      tmpValue := MaxSWEN[i];
      MaxSWEN[i] := MaxSWEN[tmpIndex];
      MaxSWEN[tmpIndex] := tmpValue;
    end;
  
  //вывод отсортированных максимумов
  for i := 1 to 4 do
    write (MaxSWEN[i], ' ');
    
  
  readln;
end.

Объяснение кода листинга программы

  1. Ar - двумерный массив целых чисел размером 5x5, представляющий квадратную матрицу.
    • Значение: создается матрица со случайными целыми числами в диапазоне от 0 до 99.
  2. MaxSWEN - массив из 4 целых чисел.
    • Значение: инициализируется начальными значениями, соответствующими четырем областям матрицы S, W, E и N.
  3. tmpValue - целое число.
    • Значение: используется для обмена значениями при сортировке.
  4. tmpIndex - целое число.
    • Значение: используется для хранения индекса при сортировке.
  5. i - целое число.
    • Значение: используется в циклах для перебора строк матрицы.
  6. g - целое число.
    • Значение: используется в циклах для перебора столбцов матрицы.
  7. Создается квадратная матрица размером 5x5, заполняется случайными целыми числами и выводится.
  8. Максимумы для областей S, W, E и N инициализируются начальными значениями из матрицы.
  9. Происходит перебор всех элементов матрицы и определение максимумов для каждой из четырех областей.
  10. Выводятся максимумы для каждой из четырех областей в контрольной строке.
  11. Происходит сортировка максимумов в порядке убывания.
  12. Отсортированные максимумы выводятся.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы