Найти наибольший и наименьший элемент заштрихованной части матрицы - Free Pascal (996)
Формулировка задачи:
здравствуйте, помогите пожалуйста написать программу по заданию:
дано натуральное число n сформулировать произвольную матрицу размерность n*m. найти наибольший и наименьший элемент заштриховоной части.
Решение задачи: «Найти наибольший и наименьший элемент заштрихованной части матрицы»
textual
Листинг программы
uses crt;
const nmax=20;
var a:array[1..nmax,1..nmax] of integer;
n,m,i,j,k,mx:integer;
begin
clrscr;
randomize;
repeat
write('Количество строк до ',nmax,' n=');
readln(n);
until n in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' m=');
readln(m);
until m in [1..nmax];
k:=m-n;
writeln('Исходная матрица:');
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(50);
if (j>=m-i+1)and(j>=i+k) then
begin
if(i=1)and(j=m) then mx:=a[i,j]
else if a[i,j]>mx then mx:=a[i,j];
textcolor(12);
end
else textcolor(0);
write(a[i,j]:3);
end;
writeln;
end;
textcolor(0);
writeln('Максимальный элемент в выделенной области=',mx);
readln
end.
Объяснение кода листинга программы
- Объявление переменных:
- a: массив для хранения значений матрицы
- n, m, i, j, k, mx: целочисленные переменные для выполнения задач
- Цикл repeat-until для ввода количества строк и столбцов матрицы
- Вычисление значения переменной k как разности между количеством столбцов и строк
- Цикл двойной вложенности для вывода значений матрицы
- Условие if для выделения диагонали матрицы
- Если текущая ячейка находится на диагонали и её значение больше максимального, то обновление значения переменной mx
- Установка цвета текста в 12 для выделения выделенной области
- Вывод значения ячейки с смещением на 3 символа
- Установка цвета текста в 0 после вывода выделенной области
- Вывод значения переменной mx как максимального элемента выделенной области
- Ожидание нажатия клавиши для завершения программы