我试图在4x4阵列中获取所有对角线数字的乘积。我知道如何抓取数字并打印出来,但我不确定如何获取它们的产品,我如何计算8个数字的乘积?
#include <iostream>
using namespace std;
for (int row = 0; row < 4; row++)
{
for (int column = 0; column < 4; column++)
{
if (row==column || row == 3 - column)
{
double product = 1;
product *= arr[row][column]
cout << product << ".";
}
}
}
答案 0 :(得分:0)
注意:
7
个对角元素。您正在计算矩阵中心的元素两次。row == column
的良好属性,您只需要沿着对角线进行迭代。为了使事情更清晰,更容易,分别计算两个对角线产品:
double product = 1;
for (int row = 0; row < 4; row++) {
product *= arr[row][row]
}
for (int row = 0; row < 4; row++) {
product *= arr[row][4 - (row + 1)]
}
如果你一次考虑每一行中的两个条目,你还必须考虑到中间元素出现在两个对角线中的事实,这使得代码不必要地混乱。
答案 1 :(得分:0)
为什么要在循环中定义变量product
,这就是为什么存储在变量中的先前数据在超出范围时会丢失的原因。
#include <iostream>
using namespace std;
double product = 1; // var product should be defined out of the loop
for (int row = 0; row < 4; row++)
{
for (int column = 0; column < 4; column++)
{
if (row==column || row == 3 - column)
{
product *= arr[row][column];
}
}
}
cout << product << ".";