我试图乘以对角线上的所有元素。例如,如果我想查找我可以使用的总和+=
,但每当我尝试和使用*=
时,它都会返回与正确答案不同的答案。这里是我的代码:C++ * =没有给出正确的答案
std::vector<std::vector<double> > U =
{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
};
double calculateDet(const std::vector<std::vector<double> > matrix)
{
double det = 0.0;
for(unsigned i = 0; (i < matrix.size()); i++)
{
for(unsigned j=0; (j < matrix[i].size()); j++)
{
if(i == j)
{
det *= matrix[i][j];
}
}
}
return det;
}
的计算应该是:1*5*6 = 30
然而,我得到的答案是0
任何想法?
编辑:
我也曾尝试使用的总和,因此:det += matrix[i][j] * matrix[i][j]
,但给我更高的价值。
'det'最初是0吗?然后'del * = whatever'会给你0. – gongzhitaao 2015-02-05 13:54:59
你从0开始。0乘以任何东西总是0.你期望什么? – tenfour 2015-02-05 13:55:28
它应该是'1 * 5 * 9 = 45':) – prajmus 2015-02-05 13:56:10