实际上我想从数组中获取绝对值,这是我能想到使用'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;
}
我不确定你是否可以将一个整数与一个数组相乘..或者至少,当我执行它时它没有产生我想要的结果,负面仍然存在..
我意识到这个表达式if(x [i]&lt; 1)不起作用,希望有人能帮忙!真的很感激〜 如果没有,还有另一种方式吗?谢谢!
答案 0 :(得分:1)
您在使用哪种语言非常重要。
如果您正在使用包含函数式编程的语言,您可以执行类似这样的操作(伪代码):
ratio = map(ratio, function(x) { return abs(x); });
Map将函数应用于每个参数,并从所有结果中生成一个新数组。
如果你没有地图,那么这样的事应该可以正常工作:
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;
}
答案 1 :(得分:0)
在伪代码中:
foreach value in the array:
if array[value] < 0:
array[value] = array[value] * -1
在此之后,数组中的每个值都将是绝对的非负值。
答案 2 :(得分:0)
除了两个细节外,您自己的代码工作正常:
x[9]
。if(x[i]<1)
应该将x[i]
与0比较而不是1,如下所示:if(x[i]<0)
。否则,您将把0.5之类的值转换为-0.5。这应该有效。
作为一点奖励,您可能还想完全删除else{}
。它没有做任何事情,如果没有它,程序将正常工作(再次,如果它是C或大多数其他语言)。