Программирование C++. Дана целочисленная прямоугольная матрица. Найти разность сумм...

0 голосов
145 просмотров

Программирование C++.
Дана целочисленная прямоугольная матрица. Найти разность сумм элементов на главной и побочной диагоналях.


Информатика (670 баллов) | 145 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Матрица не может быть прямоугольной так иначе будет не понятно что подразумевается под диагональю
#include
#include
int main() {
int n;
std::cin>>n;
std::vector> matrix(n);
for (int i =0;i    for (int j =0;j        int elem;
        std::cin>>elem;
        matrix[j].push_back(elem);
    }
}
int first_diag = 0;
int second_diag = 0;
for (int i = 0;i    first_diag+=matrix[i][i];
    second_diag += matrix[i][n-i-1];
}
int res = 0;
res = first_diag - second_diag;
std::cout<<res;<br>}


(175 баллов)
0

странно, все равно 0

0

там все нормально выводит

0

для больших матриц нормально срабатывает, а если число строк/столбцов равно 3, то показывает 0

0

начиная с 5 нормально робит

0

а нет ссори, я понял в чем дело

0

Спасибо)

0

Код говнище просто редкосное, такой др*сни давно не видел, пройдемся по порядку:
#include
#include
int main() { //мать его отступы, глаза кровоточат,
//переноси скобки всегда на новую строку
int n;
std::cin>>n; //нахрена постоянно пользовать обращение через namespace?!
//Это не огромный проект, тут нет кастомный namespace
//либо подключай весь std, либо конкретные функции и классы
std::vector> matrix(n); //см строку 15

0

for (int i =0;i for (int j =0;j int elem; //создаешь каждый раз новую переменную для новой ячейки?
//нехочешь вынести инстанс за пределы циклов?
std::cin>>elem; //снова через std
matrix[j].push_back(elem); //строка 15, почему бы не зарезервировать
//в векторе двумерную матрицу?
//наверное по тому, что тут начинаются классы,
//операторы new и конструкторы, а это слишком сложно,

0

//если не умеешь пользоваться, не лезь,
//используй классические динамические массивы
}
}
int first_diag = 0; //Совет, лучше называть переменную слитно, но каждое новое слово,
//с вверхнего регистра, то есть к примеру firstDialog, читается проще
int second_diag = 0;
for (int i = 0;i first_diag+=matrix[i][i]; //тут же обращаемся к матрице по индексу и ряда и столбца,
//снова смотри 15 строку
second_diag += matrix[i][n-i-1];
}

0

int res = 0;
res = first_diag - second_diag;
std::cout<<res;<br> //Где что б его return 0?! Ты имплеметировал функцию INT MAIN, она должна возращать значение!!!
}