Найти максимум среди сумм элементов диагоналей, параллельных побочной диагонали. - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Ввести целочисленную квадратную матрицу, найти максимум среди сумм элементов диагоналей, параллельных побочной диагонали.

Решение задачи: «Найти максимум среди сумм элементов диагоналей, параллельных побочной диагонали.»

textual
Листинг программы
const nmax=20;
var a:array[1..nmax,1..nmax] of integer;
    n,i,j,z,maxs,sum:integer;
begin
randomize;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Массив:');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=random(10);
    write(a[i,j]:3);
   end;
  writeln;
 end;
writeln;
{максимальная сумма из всех диагоналей }
writeln('Суммы диагоналей:');
maxs:=a[1,1];
for z:=n-1 downto -n+1 do
 begin
  {сумма на диагонали, отстоящей на z от побочной}
  sum:=0;
  for j:=1 to n do
  if (j-z>0) and (j-z<=n) then  sum:=sum+a[j-z,n-j+1];
  writeln(n-z:2,' = ',sum);
  if sum>maxs then maxs:=sum;
 end;
writeln('Максимальная сумма на диагоналях, параллельных побочной=',maxs);
end.

Объяснение кода листинга программы

  1. Создается константа nmax, которая определяет максимальное количество элементов в массиве.
  2. Создается переменная a, которая представляет собой массив размером nmax x nmax.
  3. Создаются переменные n, i, j, z, maxs и sum.
  4. Используется функция randomize, чтобы инициализировать генератор случайных чисел.
  5. Используется цикл repeat-until для получения размера массива от пользователя.
  6. В цикле for i:=1 до n do выполняется итерация по каждому элементу массива a[i,].
  7. В каждой итерации цикла for j:=1 до n do выполняется итерация по каждому элементу массива a[i,].
  8. Для каждого элемента a[i,j] вызывается функция randomize, чтобы инициализировать его значение случайным числом в диапазоне от 1 до 10.
  9. Выводится значение каждого элемента a[i,j] с помощью функции write.
  10. После завершения итераций по всем элементам массива выводится символ новой строки.
  11. Выводится сообщение о максимальной сумме из всех диагоналей.
  12. Инициализируется переменная maxs значением первой диагонали массива (a[1,1]).
  13. Используется цикл for z:=n-1 downto -n+1 do выполняется итерация по каждому элементу массива a[z,].
  14. Внутри цикла проверяется условие (j-z>0) и (j-z<=n). Если это условие истинно, то вызывается функция sum, чтобы вычислить сумму элементов на диагонали, отстоящей на z от побочной.
  15. Если сумма на диагонали больше текущего значения maxs, то maxs обновляется.
  16. После завершения итераций по всем элементам массива выводится сообщение о максимальной сумме на диагонали, параллельной побочной.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы