В квадратной целочисленной матрице найти максимумы образованных диагоналями областей, упорядочить их - 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.
Объяснение кода листинга программы
- Ar - двумерный массив целых чисел размером 5x5, представляющий квадратную матрицу.
- Значение: создается матрица со случайными целыми числами в диапазоне от 0 до 99.
- MaxSWEN - массив из 4 целых чисел.
- Значение: инициализируется начальными значениями, соответствующими четырем областям матрицы S, W, E и N.
- tmpValue - целое число.
- Значение: используется для обмена значениями при сортировке.
- tmpIndex - целое число.
- Значение: используется для хранения индекса при сортировке.
- i - целое число.
- Значение: используется в циклах для перебора строк матрицы.
- g - целое число.
- Значение: используется в циклах для перебора столбцов матрицы.
- Создается квадратная матрица размером 5x5, заполняется случайными целыми числами и выводится.
- Максимумы для областей S, W, E и N инициализируются начальными значениями из матрицы.
- Происходит перебор всех элементов матрицы и определение максимумов для каждой из четырех областей.
- Выводятся максимумы для каждой из четырех областей в контрольной строке.
- Происходит сортировка максимумов в порядке убывания.
- Отсортированные максимумы выводятся.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д