-1

此代码按预期工作,为我提供这 10 个输入字段中的数字。现在,我希望将它们全部加到一个数字上。(所有 miTimesFrac 结果。)有什么真正有效的方法吗?

double fraction[10] = {methane, ethane, propane, nbutane, ibutane,npentane,ipentane,nhexane,nitrogen,oxygen};
double Mi[10] = {16.0426,30.064,44.0962,558.123,558.123,72.1498,72.1498,86.1766,28.0134,31.9988};
double miTimesFrac[10];
for (int i=0; i<10; ++i) miTimesFrac[i] = Mi[i] * fraction[i];

我已经尝试了一些东西,像这样

double TMiTimesFrac;
for (int i=1; i<10; ++i) TMiTimesFrac = miTimesFrac[i]+miTimesFrac[i-1];

每次都返回相同的值。我缺少任何功能吗?

4

1 回答 1

0

这:

double TMiTimesFrac;
for (int i=1; i<10; ++i) 
    TMiTimesFrac = miTimesFrac[i]+miTimesFrac[i-1];

不做这项工作,因为您没有跟踪 TMiTimesFrac 的所有先前值,因此只有最后一个值 (miTimesFrac[9]+miTimesFrac[8]) 对 TMiTimesFrac 的最终值有贡献。

所以首先将 TMiTimesFrac 初始化为零。然后将每个值添加到它:

double TMiTimesFrac= 0.0;
for(unsigned int i=0; i<10; i++)
{
    TMiTimesFrac+=miTimesFrac[i];
}

现在您应该能够在不粘贴代码的情况下完成此操作。我建议尝试一下。

于 2013-01-04T23:16:21.690 回答