2010-09-06 88 views
0

其實我想從數組中獲得絕對值,並且我可以想到使用'if'循環將數組中的值與(-1)相乘的唯一方法。但它是這樣工作嗎?如:如何將整數與數組中的值相乘?

for (i = 1 ; i <= 10 ; i++) { 

    if(x[i]<1) { 
     x[i] = (-1) * x[i]; 
    } else{} 

    ratio[i] = (x[i]/fx[i]) * 0.5; 
} 

我不知道如果u可以直接乘整數與array..or至少,當我做它沒有產生我想要的結果aboive,底片依然存在..

我意識到這個表達式if(x [i] < 1)不起作用,希望有人能幫忙!真的很感激它〜 如果沒有,有沒有另一種方式?謝謝!

+0

in C,#include and use x [i] = fabs(x [i])。 – 2010-09-06 09:07:11

回答

0

自己的代碼工作正常,但有兩個細節:

  • for循環或許應該去從 0到9,而不是1到10至少如果是的langauge C(或多數的語言)。可能起初似乎很奇怪,但是數組從0開始計數。因此第十個元素將被稱爲x[9]
  • if語句if(x[i]<1)應比較x[i]爲0而不是1,如下所示:if(x[i]<0)。否則,你會將0.5的值變成-0.5。

這應該使它工作。

作爲一個小紅利,你可能也想完全刪除else{}。它沒有做任何事情,如果沒有它,程序就會正常工作(再次,如果它是C或大多數其他語言)。

1

你在使用什麼語言在這裏非常重要。

如果您正在使用與它函數式編程的作品語言,你可以做這樣的事情(僞代碼):

ratio = map(ratio, function(x) { return abs(x); }); 

地圖應用的功能,每個參數,並提出了新的陣列出來的所有的結果。

如果你沒有地圖,那麼這樣的事情應該很好地工作:

for (int i=0;i<=10;i++){ 
    ratio = Math.abs(ratio[i]); 
} 

Math.abs被假定爲一個庫函數來計算絕對值。 Math.abs的確切位置取決於語言;例如,在C++中它是在cmath中。

如果你不能找到它,你總是可以寫這樣的:

function abs(int x){ 
    if (x < 0) return -x; 
    return x; 
} 
0

僞代碼:

foreach value in the array: 
    if array[value] < 0: 
     array[value] = array[value] * -1 

在此之後,陣列中的每個值將是絕對的,非負值。

+0

那麼,這樣的乘法實際上起作用吧?你確定? – esther 2010-09-07 15:28:53

相關問題