В квадратной целочисленной матрице найти максимумы образованных диагоналями областей, упорядочить их - 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 инициализируются начальными значениями из матрицы.
- Происходит перебор всех элементов матрицы и определение максимумов для каждой из четырех областей.
- Выводятся максимумы для каждой из четырех областей в контрольной строке.
- Происходит сортировка максимумов в порядке убывания.
- Отсортированные максимумы выводятся.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д