Ошибка в с++ программа

120
28 июня 2019, 05:50

Найти сумму под и над главной диагональю ПРИМЕР 1 2 3 4 5 6 7 8 9 над ней будет 2+3+6=11 - правильно, а под 4+7+8=19 , а выдает 15 (7+8) Вот код:`

#include <iostream>
using namespace std;
int main()
{
int S1, S2, i, j, N, a[10][10];
cout<<"N="; 
cin>>N;
cout<<"Введите элементы матрицы А \n";
for (i=0; i<N; i++)
for (j=0; j<N; j++)
cin>>a[i][j];
for (S1=i=0; i<N; i++)
for (S2=j=0; j<N; j++)
for (j=0; j<N; j++)
//если элемент лежит выше главной диагонали, то наращиваем сумму
{
            if (j>i) 
        {
                S1+=a[i][j];
        }
        else
        {
            if (i>j) 
        {
                S2+=a[i][j]; 
        }
    }
}
cout<<"S1="<<S1<<endl;
cout<<"S2="<<S2<<endl;
return 0;
}
Answer 1

Проблемный участок был

for (S1=i=0; i<N; i++)

for (S2=j=0; j<N; j++)

for (j=0; j<N; j++)

S2 = j = 0

На каждой итерации цикла for (S1=i=0; i<N; i++) S2 устанавливалось значение 0, т.е. сумма сбрасывалась

цикл for (j=0; j<N; j++)

Оказался лишним

Надеюсь непротив того что немного привёл к приличному виду код :)

#include <iostream>
using namespace std;
int main(void)
{   
    int sum1 = 0;
    int sum2 = 0;
    cout << "N = ";
    int N;
    cin >> N;
    cout << "Введите элементы матрицы А: \n";
    // Выделение динамической памяти для массива
    int** arr = new int* [N];
    for (int i = 0; i < N; ++i)
        arr[i] = new int [N];
    for (int i = 0; i < N; ++i)
        for (int j = 0; j < N; ++j)
            cin >> arr[i][j];
    for (int i = 0; i < N; ++i)
        for (int j = 0; j < N; ++j)
            if (j > i)
                sum1 += arr[i][j]; // если элемент лежит выше главной диагонали, то наращиваем сумму
            else if (i > j)
                sum2 += arr[i][j];
    cout << "S1=" << sum1 << endl;
    cout << "S2=" << sum2 << endl;
    // Освобождение выделеной памяти для массива
    for (int i = 0; i < N; ++i)
        delete[] arr[i];
    delete[] arr;
    return 0;
}
READ ALSO
Как использовать Qt в C++ без QtCreator?

Как использовать Qt в C++ без QtCreator?

Как я могу использовать Qt без QtCreator?

97
Специализация шаблонной функции для std::string

Специализация шаблонной функции для std::string

Есть шаблонная функция, принимающая аргумент произвольного типаХочется сделать специализацию этой функции для строк, но при этом строку...

113
Логические операторы c++

Логические операторы c++

Начал учить с++, на теме логических операторов после пары минут экспериментов наткнулся на то, что есть некоторые нелогичные моменты у логических...

112
Как преобразовать string в char?

Как преобразовать string в char?

Есть произвольная строка не больше 25 символовНапример "wo1fram" Как преобразовать ее в массив char[255]? Чтобы потом с char можно было работать как...

119