2010-09-06 57 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

相关问题