2015-12-05 100 views
0

我發現難以乘以數組中的所有元素。我正在寫兩個元素數組,然後我將這兩個數組合併爲一個負數數組。後來,我想乘以該合併數組的所有元素。這是我的嘗試:如何將數組中的所有元素相乘

int mul = 0; 
    for (i = 0; i < negativecount; ++i) 
    { 
     mul = mul * merge[i]; 
    } 
    cout << mul << endl; 
} 

而且我得到隨機數字作爲答案。我該如何解決這個問題?

+1

當你運行該代碼時,你應該得到'0'結果.... – wimh

+0

以'mul = 1'開頭.....但是如果你得到的隨機數是ans,那可能是因爲'i'達到使數組越界的價值。 ... – wrangler

+0

你也可以使用'int mul = std :: accumulate(merge,merge + negativecount,1,multiply ());' –

回答

-1

不僅您最初的乘積值必須是1像牧馬人說。同樣,你的合併數組的價值對於知道你得到的答案很重要。

在這一行好好看看:

mul = mul * merge[i]; 

你到底在這裏試着完成?因爲你不是乘數組中的數字,而只是你的乘法因子?因爲你的'mul'值最終取決於你的初始值,迭代次數和merge [i]值,它看起來可能是隨機的。下面的代碼將爲您提供的2 MUL值:

int mul = 2; 
int negativecount = 10; 

int *merge = (int*)malloc(10 * sizeof(int)); 
for (int i = 0; i < negativecount; ++i) 
{ 
    merge[i] = 1; 
    mul = mul * merge[i]; 
} 
cout << mul << endl; 

不過,我想你想的是:

for (int i = 0; i < negativecount; i++) 
{ 
    merge[i] = merge[i] * mul; 
} 

祝你好運!

+0

那麼,當OP說他們想「乘以數組中的所有元素」時,他們可以想象他們想要計算數組中所有元素的*乘積* 。 OP的代碼似乎暗示了後者的意圖。 – AnT

+0

啊,沒有看那樣:) – DrDonut

相關問題