Сумма не диагональных элементов матрицы (отладить код) - C (СИ)

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

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

Добрый день. Написал программу, считающую не диагональные элементы. Выдает число -1717986919 (Подозреваю, что некорректно считаю элементы на побочной диагонали). Код привожу, если не затруднит, подскажите, что не так. Заранее спасибо.
#include<stdio.h>
#include<conio.h>
int main()
{
    //иницилизируем и заполняем массив
    int M[10][10];
int i,j,n,sd1=0,sd2=0,sdiag=0, vsego=0, symma=0;
printf("n="); scanf("%d", &n);
for (i=0;i<n;i++)
    for(j=0;j<n;j++)
        scanf("%d", &M[i][j]);
//выводим его
printf("Massiv");
printf("\n");
for (i=0;i<n;i++)
    {for(j=0;j<n;j++)
    printf("%d\t", M[i][j]); printf("\n");}
printf("\n");
//сумма эл-тов главной диаганали
for(i=0;i<n;i++)
    sd1=sd1+M[i][i];
//сумма эл-тов побочной диаганали
for(i=0;i<n;i++)
for(j=n;j>0;j--)
sd2=sd2+M[i][j];
 
//сумма всех эл-тов
for (i=0;i<n;i++)
for(j=0;j<n;j++)
vsego=vsego+M[i][j];
if (n%2==0)//условие чётности
sdiag=sd1+sd2;
else
sdiag=sd1+sd2-M[n%2][n%2];//условие нечётности(срединный член не считается дважды)
//сумма на диагоналях
sdiag=sd1+sd2;
 
//сумма не диагональных эл-тов
symma=vsego-sdiag;
printf("\n");
printf("symma=%d",symma);
getch();
}

Решение задачи: «Сумма не диагональных элементов матрицы (отладить код)»

textual
Листинг программы
for(i=0,j=n-1;i<n;i++,j--)

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

В данном коде выполняется два вложенных цикла, которые предназначены для прохода по всем элементам матрицы.

  1. Первый цикл проходит по строкам матрицы (по i).
  2. Второй цикл проходит по столбцам матрицы (по j). Переменная n содержит размерность матрицы (число строк). Условие продолжения первого цикла: i < n - пока текущая итерация не достигнет последней строки матрицы. Условие продолжения второго цикла: j >= 0 - пока текущая итерация не достигнет первой строки матрицы (т.к. в цикле переменная j уменьшается на единицу). Внутри циклов происходит проверка условия на недиагональность элемента матрицы (если i != j), и если это условие выполняется, то к сумме прибавляется значение элемента матрицы. Также в теле циклов выполняется проверка условия на выход за границы матрицы (если i или j превышают размерность матрицы), и если это условие выполняется, то происходит выход из программы. Таким образом, данный код выполняет сумму всех недиагональных элементов матрицы.

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

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