【问题标题】:how to multiply integers to values in an array?如何将整数乘以数组中的值?
【发布时间】:2010-09-06 08:43:24
【问题描述】:

实际上,我想从数组中获取绝对值,并且我能想到的唯一方法是使用“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]

【问题讨论】:

  • 在 C 中,#include 并使用 x[i] = fabs(x[i])。

标签: arrays loops


【解决方案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;
} 

【讨论】:

    【解决方案2】:

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

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

    这应该可以正常工作。

    另外,您可能还想完全删除 else{}。它什么也不做,没有它程序也能正常工作(同样,如果它是 C 或大多数其他语言)。

    【讨论】:

      【解决方案3】:

      在伪代码中:

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

      在此之后,数组中的每个值都将是绝对的非负值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-29
        相关资源
        最近更新 更多