-1

このコードは意図したとおりに機能し、これら 10 個の入力フィールドから数値が得られます。今、それらすべてを 1 つの数字にまとめたいと思います。(すべての 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 に答える