я при выполнении получил ошибку в 152 строке (delete[] multed;)
возможно, вы напартичили с указателями и nan получается из мусорных значений
вы вроде на c++ пишете, а
векторами не пользуетесь
вектора не будут давать ошибок при работе с указателями, и во время дебага отладчик показывает все содержимое вектора а не только 1 число
все, что связанно с указателями, new, delete надо вычеркнуть из своего кода заменить это все векторами
и матрицу лучше делать так:
int n;
vector<float> maxrix(n * n, 0); // так плохо
vector<vector<float>> matrix(n, move(vector<float>(n, 0))); // так хорошо
и еще для примера я тебе переписал функцию subtract, чтобы ты знал как это нормально делается
vector<vector<float>>& operator -=(vector<vector<float>>& Left, const vector<vector<float>>& Right) {
assert(Left.size() == Right.size()); // #include <cassert>
//ассерт выполняется только в режиме дебага. он делает твой код безопаснее
for (size_t i = 0; i < Left.size(); i++)
{
vector<float>& line = Left[i];//принимает по ссылке, а не по значению.
const vector<float>& r_line = Right[i];
assert(line.size() == r_line.size()); // #include <cassert>
for (size_t j = 0; j < line.size(); j++)
{
line[j] -= r_line[j];
}
}
return Left;
}
vector<vector<float>> operator -(const vector<vector<float>>& Left, const vector<vector<float>>& Right) {
auto copy = Left;
copy -= Right;
return copy;
}
const type& - значение передается по ссылке, без копирования с запретом на изменение
type& - значение передается по ссылке, без копирования, можно вносить изменения