Матрицы: нахождение минимума в каждом столбце и максимума в каждой строке - Pascal ABC
Формулировка задачи:
Добрый вечер. Помогите, пожалуйста, не могу объединить эти две программы нахождения минимального элемента в каждом столбце и максимального в каждой строке вместе.
Решение задачи: «Матрицы: нахождение минимума в каждом столбце и максимума в каждой строке»
textual
Листинг программы
var
a: Array[Byte, Byte] Of ShortInt;
b: Array[0..1, Byte] Of Byte;
i, j, n: Byte;
begin
Randomize;
repeat
Write('Input n='); ReadLn(n);
until (n > 0);
for j := 0 to n - 1 do
begin
b[0, j] := 0;
b[1, j] := 0;
end;
for i := 0 to n - 1 do
for j := 0 to n - 1 do
begin
a[i, j] := Random(199) - 99;
if (a[i, j] > a[i, b[0, i]])
then
b[0, i] := j;
if (a[i, j] < a[b[1, j], j])
then
b[1, j] := i;
end;
for i := 0 to n - 1 do
begin
for j := 0 to n - 1 do
Write(a[i, j]:4);
WriteLn(' | ', a[i, b[0, i]]:4);
end;
for j := 0 to n - 1 do
Write('----');
WriteLn;
for j := 0 to n - 1 do
Write(a[b[1, j], j]:4);
end.
Объяснение кода листинга программы
- Создаются две матрицы: a и b.
- В цикле while считывается число n и пока оно больше 0, выполняется цикл for j := 0 до n-1.
- В цикле for j := 0 до n-1 заполняются нулями первые два элемента матрицы b.
- В цикле for i := 0 до n-1 выполняется второй цикл for j := 0 до n-1.
- Внутри второго цикла for j := 0 до n-1 генерируется случайное число от 0 до 198 и записывается в элемент a[i, j].
- Если a[i, j] больше a[i, b[0, i]], то b[0, i] присваивается значение j.
- Если a[i, j] меньше a[b[1, j], j], то b[1, j] присваивается значение i.
- После окончания второго цикла for j := 0 до n-1 выполняется третий цикл for i := 0 до n-1.
- В третьем цикле выводятся значения элементов матрицы a и b.
- Выводится строка
----. - Выводится значение a[b[1, j], j].