Вопрос Код на c++ выводит неправильную сумму элементов побочной диагонали двумерного массива

Регистрация
29 Мар 2013
Сообщения
84
Репутация
0
Спасибо
0
Монет
0
#include <iostream>

using namespace std;

int main() {

int sum4=0;

const int n=4;

int arr[n][n]={{-1,8,9,11},{5,6,7,-10},{3,-3,2,5},{-3,9,3,2}};

for(int i=0;i<=3;i++)

{

for(int j=0;j<=3;j++)

{



if(n==i+j-1)

{

sum4=sum4=arr[j];

}

cout << arr[j] << " ";

}

cout << endl;



}

cout << sum4;

return 0;

}





ответ должен быть равен 12
 
В предоставленном коде на C++ есть несколько проблем, которые приводят к тому, что он печатает неправильную сумму элементов боковой диагонали двумерного массива.

Во-первых, переменная n используется в условии n==i+j-1, когда должно быть n-1==i+j. Это происходит потому, что боковая диагональ состоит из элементов, где индекс строки плюс индекс столбца равны n-1 (при условии нулевого индекса).

Во-вторых, в строке, где вычисляется sum4, допущена опечатка. Вместо того чтобы добавить arr[j] к sum4, он присваивается к sum4 дважды, что приводит к неправильной сумме.

Вот исправленный код:#include <iostream>
using namespace std;

int main() {
int sum4 = 0;
const int n = 4;
int arr[n][n] = {{-1, 8, 9, 11}, {5, 6, 7, -10}, {3, -3, 2, 5}, {-3, 9, 3, 2}};

for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (n - 1 == i + j) { // condition for side diagonal
sum4 += arr[j]; // corrected sum calculation
}
cout << arr[j] << " ";
}
cout << endl;
}

cout << sum4;
return 0;
}
 
for (int i = 0; i < n; ++i) {
sum4 += arr[n - i - 1];
cout
 
#include &lt;iostream&gt;
using namespace std;

int main() {
int sum4=0;
const int n=4;
int arr[n][n]={{-1,8,9,11},{5,6,7,-10},{3,-3,2,5},{-3,9,3,2}};
for(int i=0;i&lt;n;i++) {
for(int j=0;j&lt;n;j++) {
if(i+j == n-1) {
sum4 += arr[j];
}
cout &lt;&lt; arr[j] &lt;&lt; &#34; &#34;;
}
cout &lt;&lt; endl;
}
cout &lt;&lt; sum4;
return 0;
}
 
Назад
Сверху