В квадратной матрице найти минимальный элемент ниже побочной диагонали. Кроме того вывести на экран в табличном виде исходную матрицу и отдельно часть матрицы ниже побочной диагонали.
Побочная диагональ матрицы идет от верхнего правого угла до нижнего левого. Пусть N - это размерность квадратной матрицы, i - это номер строки, а j - номер столбца (или номер элемента в строке). Тогда, если перебирать построчно матрицу, то элемент, стоящий на побочной диагонали будет иметь индекс [i, N-i+1]. Действительно, когда i = 1, то j = N, то есть это последний элемент первой строки. Когда i = 2, то j = N - 1, - это предпоследний элемент второй строки; и так далее.
Таким образом можно сделать вывод, что все элементы в конкретной строке от побочной диагонали и до конца строки имеют индексы от N-i+1 до N.
Учитывая то, что сама диагональ нас не интересует, следует в каждой строке первым брать не элемент диагонали, а следующий за ним. Следовательно, формула первого элемента строки после побочной диагонали будет иметь вид N-i+2.
Для того, чтобы вывести часть матрицы ниже побочной диагонали так же, как она располагается в выводе всей матрицы, надо заполнить строку пробелами в количестве, соответствующем количеству невыведенных элементов. Так, в примере ниже, на каждый элемент отводится 5 знакомест. Количество невыведенных элементов каждой строки равно N-i+1. Таким образом общее количество пробелов равно 5(N-i+1).
Сам поиск минимума - это самая легкая часть задачи. При выводе элементов, расположенных ниже побочной диагонали, их заодно можно проверять, не меньше ли они уже найденного минимума.
const N = 10; var m: array[1..N,1..N] of integer; i, j: byte; min: integer; begin randomize; for i:=1 to N do begin for j:=1 to N do begin m[i,j] := random(100) - 50; write(m[i,j]:5); end; writeln; end; min := 32767; for i:=1 to N do begin write(' ':5 * (N - i+1)); for j:=N-i+2 to N do begin write(m[i,j]:5); if min > m[i,j] then min := m[i,j]; end; writeln(); end; writeln('Minimum: ', min); end.
Пример выполнения:
37 -15 -14 25 -18 28 -49 -27 -32 -38
-10 -26 1 33 49 0 41 28 11 39
-43 -5 -33 33 -15 5 -15 -3 1 -24
-19 -27 -24 16 46 10 28 47 41 -15
26 42 -1 6 46 22 -1 -20 11 -34
-48 10 -45 25 -34 30 5 35 -32 24
-26 33 29 -37 -11 -14 -11 -10 -7 -15
-12 27 -17 24 -46 23 -30 -31 -38 -19
30 -44 37 37 -27 40 -7 19 -29 -32
8 -33 47 -26 31 43 11 -3 24 5
39
1 -24
47 41 -15
-1 -20 11 -34
30 5 35 -32 24
-11 -14 -11 -10 -7 -15
24 -46 23 -30 -31 -38 -19
37 37 -27 40 -7 19 -29 -32
-33 47 -26 31 43 11 -3 24 5
Minimum: -46
Комментарии
минимальное число каждой строки!
Помогите пожалуйста составить код к задаче: дан двумерный массив (матрица), найти наибольшее число каждой строки этого массива(матрицы);
const N = 10; M = 15; var
Найти минимум!
Спасибо! Только вот такая задача, этот код переделать нужно на нахождение минимального каждой строки... вроде бы и легко, но код не работоспособный у меня получается(
Меняются только две
Меняются только две строчки.
В переменной, где хранится минимальное, начальное значение должно быть на 1 больше максимально возможного. В данном случае 100.
В if поменять знак на обратный.
Переменную лучше назвать не max, а min или как иначе.