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

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

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

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

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

textual
Листинг программы
  1. program SWEN_Matrix;
  2. //работает для матриц с размером более чем 2: MxN, M > 2 и N > 2.
  3.  
  4. var
  5.   Ar : array [1..5, 1..5] of Integer;
  6.   MaxSWEN : array [1..4] of Integer;
  7.   tmpValue : Integer;
  8.   tmpIndex : Word;
  9.   i, g : Word;
  10.  
  11. begin
  12.   //формируем и выводим матрицу
  13.   randomize;
  14.   for i := 1 to 5 do
  15.     begin
  16.       for g := 1 to 5 do
  17.         begin
  18.           Ar[i][g] := floor(random()*100);
  19.           write (Ar[i][g]:3, ' ');
  20.         end;
  21.       writeln;
  22.     end;
  23.   writeln;
  24.  
  25.   //инициализируем максимумы
  26.   MaxSWEN[1] := Ar[1][2];   //S
  27.   MaxSWEN[2] := Ar[2][1];   //W
  28.   MaxSWEN[3] := Ar[2][5];   //E
  29.   MaxSWEN[4] := Ar[5][2];   //N
  30.  
  31.   for i := 1 to 5 do
  32.     for g := 1 to 5 do
  33.       begin
  34.         //первым делом исключаем из обработки элементы диагоналей
  35.         if (i = g) or ( i = 5 - g +1)
  36.         then continue;
  37.        
  38.         //распознаём область
  39.         {* S *
  40.          W * E
  41.          * N *}
  42.         //S
  43.         if (i < g) and (i < 5 - g +1)
  44.         then if (Ar[i][g] > MaxSWEN[1])
  45.              then MaxSWEN[1] := Ar[i][g];
  46.        
  47.         //W
  48.         if (i > g) and (i < 5 - g +1)
  49.         then if (Ar[i][g] > MaxSWEN[2])
  50.              then MaxSWEN[2] := Ar[i][g];
  51.              
  52.         //E
  53.         if (i < g) and (i > 5 - g +1)
  54.         then if (Ar[i][g] > MaxSWEN[3])
  55.              then MaxSWEN[3] := Ar[i][g];
  56.              
  57.         //N
  58.         if (i > g) and (i > 5 - g +1)
  59.         then if (Ar[i][g] > MaxSWEN[4])
  60.              then MaxSWEN[4] := Ar[i][g];            
  61.       end;
  62.      
  63.   //контрольная строка: показываем,что правильно нашли элементы в этих секторах
  64.   for i := 1 to 4 do
  65.     write (MaxSWEN[i], ' ');
  66.   writeln;
  67.  
  68.   //сортировка
  69.   for i := 1 to 3 do
  70.     begin
  71.       tmpIndex := i;
  72.       for g := i + 1 to 4 do
  73.         if MaxSWEN[g] > MaxSWEN[tmpIndex]
  74.         then tmpIndex := g;
  75.      
  76.       tmpValue := MaxSWEN[i];
  77.       MaxSWEN[i] := MaxSWEN[tmpIndex];
  78.       MaxSWEN[tmpIndex] := tmpValue;
  79.     end;
  80.  
  81.   //вывод отсортированных максимумов
  82.   for i := 1 to 4 do
  83.     write (MaxSWEN[i], ' ');
  84.    
  85.  
  86.   readln;
  87. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы