Для заданной целочисленной матрицы найти максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы - Turbo Pascal
Формулировка задачи:
Для заданной целочисленной матрицы найти максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
Решение задачи: «Для заданной целочисленной матрицы найти максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы»
textual
Листинг программы
procedure TForm1.Button2Click(Sender: TObject); begin for j := 1 to m-1 do begin sum := 0; for i := 1 to n-j do sum := sum + a[i+j,i]; if j=1 then max_sum := sum else if sum>max_sum then max_sum := sum; end; for j := 1 to m-1 do begin sum := 0; for i := 1 to n-j do sum := sum + a[i,j+i]; if j=1 then max_sum1 := sum else if sum>max_sum1 then max_sum1 := sum; end; if max_sum1>max_sum then max_sum := max_sum1; label2.caption:=IntToStr(max_sum); end;
Объяснение кода листинга программы
- В процедуре
Button2Click
мы используем циклfor
, который выполняется от 1 доm-1
. Здесьm
- это размер матрицы, аn
- количество строк в матрице. - Внутри первого цикла мы инициализируем переменную
sum
значением 0. Эта переменная будет использоваться для накопления суммы элементов диагонали. - Затем мы используем вложенный цикл
for
, который выполняется от 1 доn-j
. В этом цикле мы накапливаем сумму элементов диагонали, используя элементы матрицыa[i+j,i]
. Это означает, что мы берем элементы из строкиi+j
и столбцаi
. - После завершения вложенного цикла мы проверяем, является ли текущая сумма максимальной среди сумм элементов диагоналей. Если это так, то присваиваем переменной
max_sum
значение текущей суммы. Если нет, то сравниваем текущую сумму с переменнойmax_sum
и обновляемmax_sum
, если текущая сумма больше. - После этого мы повторяем процесс для всех оставшихся строк матрицы, начиная со второй строки (используя переменную
j
). - После завершения второго цикла мы снова проверяем, является ли текущая сумма максимальной среди сумм элементов диагоналей. Если это так, то присваиваем переменной
max_sum
значение текущей суммы. Если нет, то сравниваем текущую сумму с переменнойmax_sum
и обновляемmax_sum
, если текущая сумма больше. - Наконец, мы сравниваем
max_sum1
сmax_sum
и обновляемmax_sum
, еслиmax_sum1
больше. Это гарантирует, что в конце процедуры у нас будет максимальная сумма элементов диагонали. - В конце процедуры мы устанавливаем метку
label2
с текстом, представляющим значение максимальной суммы, используя функциюIntToStr()
.