Двумерная матрица: найти минимальную сумму из чисел стоящих на диагоналях параллельных побочной - Pascal

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

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

Дано A(6.6) Двумерная матрица из этой матрицы надо найти минимальную сумму параллельным побочной диагонали.
for i:=-6+1 to 6-1 do zum[i]:=0; 
for i:=1 to 6 do 
for j:=1 to 6 do z[i-j]:=z[i-j]+x[i,j]; 
for i:=-6+1 to 6-1 do write(z[i]);
вот так нашел параллельную побочный диагонал дальше надо найти мин сумму
program gazya;
const
 n=5;
 m=6;
var a:array[1..6,1..6] of integer; 
min,i,j,s:integer;
begin
randomize;
for i:=1 to 6 do
begin
for j:=1 to 6 do
begin
a[i,j]:=random(10);
write(a[i,j]:2);
end;
writeln;
end;
for i:=1 to 6 do
s:=s+a[i,i]+a[i,6-i+1];
writeln(s);
min:=a[i-m+1,m];
       for i:=i-m+1 to m do
       for j:=i-m+1 to m do
       if (j=i-i+1)and(a[i,j]<min) then min:=a[i,j];
  writeln('min: ', min); 
end.
примерно вот так но надо параллельным побочной диагонали. а тут просто диагонал
что не кто не может помочь?

Решение задачи: «Двумерная матрица: найти минимальную сумму из чисел стоящих на диагоналях параллельных побочной»

textual
Листинг программы
uses crt;
const n=6;
var a:array[1..n,1..n] of integer;
    i,j,k,z,sm,mn:integer;
begin
randomize;
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=random(20);
    write(a[i,j]:3);
   end;
  writeln;
 end;
for z:=n-1 downto -n+1 do//все диагонали, удаленные от побочной на z
 begin
  sm:=0;
  for j:=1 to n do
  if (j-z>0) and (j-z<=n) then
  sm:=sm+a[j-z,n-j+1];
  writeln('Сумма ',n-z,' = ',sm);
  if j-z=1 then mn:=sm
  else if sm<mn then mn:=sm;
 end;
writeln('Минимальная сумма на диагоналях, параллельных побочной=',mn)
end.

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

  1. Импортируется модуль crt для работы с консолью.
  2. Объявляется константа n со значением 6 для определения размера матрицы.
  3. Объявляется двумерный массив a размером n x n для хранения целых чисел.
  4. Объявляются переменные i, j, k, z, sm, mn типа integer для использования в циклах и вычислениях.
  5. Используется функция randomize для инициализации генератора случайных чисел.
  6. Для каждого элемента в матрице a[i, j] от 1 до n происходит следующее:
    • Присваивается случайное целое число от 0 до 19 элементу a[i, j].
    • Выводится значение элемента a[i, j] на экран с отступом в 3 символа.
  7. После заполнения матрицы выводится каждая строка для формирования двумерной матрицы.
  8. Выполняется цикл для каждой диагонали, параллельной главной диагонали матрицы:
    • Инициализируется переменная sm для хранения суммы значений на текущей диагонали.
    • Для каждого элемента j в диапазоне от 1 до n выполняется проверка:
      • Если (j-z) больше 0 и (j-z) меньше или равен n, выполняется следующее:
        • К сумме sm добавляется значение элемента a[j-z, n-j+1].
    • Выводится сумма значений текущей диагонали на экран.
    • Проверяется сумма на минимальное значение и обновляется переменная mn при необходимости.
  9. Выводится сообщение о минимальной сумме на диагоналях, параллельных побочной диагонали матрицы.

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

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