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