如何将整数乘以数组中的值?

时间:2010-09-06 08:43:24

标签: arrays loops

实际上我想从数组中获取绝对值,这是我能想到使用'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)不起作用,希望有人能帮忙!真的很感激〜 如果没有,还有另一种方式吗?谢谢!

3 个答案:

答案 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)

除了两个细节外,您自己的代码工作正常:

  • for循环可能应该来自 0到9,而不是1到10.至少如果语言是C(或那里的大多数语言)。一开始可能看起来很奇怪,但是数组从0开始计数。因此第十个元素将被称为x[9]
  • if语句if(x[i]<1)应该将x[i]与0比较而不是1,如下所示:if(x[i]<0)。否则,您将把0.5之类的值转换为-0.5。

这应该有效。

作为一点奖励,您可能还想完全删除else{}。它没有做任何事情,如果没有它,程序将正常工作(再次,如果它是C或大多数其他语言)。