Рассмотрим следующий код. Я должен найти разницу обеих диагоналей в С.Диагональное различие в c
#include <stdio.h>
int main() {
int n,a[100][100],sum1=0,sum2=0;
scanf("%d",&n);
for(int i=0;i<n;++i)
{
for(int j=0;j<n;++j){
scanf("%d",&a[i][j]);
if(i==j) sum1+=a[i][j];
else if((i+j)==(n-1)) sum2+=a[i][j];
}
}
if(sum1>sum2) printf("%d",(sum1-sum2));
else printf("%d",(sum2-sum1));
return 0;
}
Когда я изменяю else if
в if
, то код работает отлично. Зачем?
В чем вопрос? Почему вы получаете неправильный результат? Рассмотрим случай матрицы 5x5 для ex - средняя ячейка должна вносить вклад в обе диагональные суммы, а если вы используете 'else if', это будет только способствовать первому. –
, пожалуйста, измените это, чтобы задать вопрос – Mousey