如何从数组中减去相同的数字

How to subtract the same number from an array

我正在练习下面的语句:

您负责由多节货车组成的铁路货运车队。你启动了火车,几分钟后你意识到一些车厢超载并且在 rails 上的重量过重,而其他车厢则轻得危险。所以你决定让火车停下来,更均匀地分配重量,让所有的车厢都具有完全相同的重量(总重量不变)。为此,您编写了一个程序来帮助您分配重量。

您的程序应首先读取要称重的汽车数量(整数),然后读取汽车的重量(双精度)。然后你的程序应该计算并显示每辆车要增加或减少多少重量,以使每辆车具有相同的重量。所有汽车的总重量不应改变。这些加减权重要显示一位小数。

您可以假设不超过 50 节车厢。

示例 1 在此示例中,有 5 辆箱车,重量总和为 110.0。输出显示我们正在修改所有货车车厢,使它们各自承载 22.0 的重量(这使得整列火车的总重量为 110.0)。所以我们为第一节车厢删除 18.0,为第二节车厢添加 10.0,为第三节车厢添加 2.0,依此类推。

输入 5个 40.0 12.0 20.0 5.0 33.0

输出 -18.0 10.0 2.0 17.0 -11.0

到目前为止我已经做了:

#include <stdio.h>

int main()
{
    int num, cellNumber = 0, sum = 0, i;
    double w = 0, arr_w[50], obj, arr_new[50];


    scanf("%d", &num);

    for (i = 0; i<num;i++){
        scanf("%lf", &w);
        arr_w[cellNumber] = w;
        cellNumber = cellNumber + 1;
        sum = sum + arr_w[i];
    }

    obj = sum/num;

    arr_new = ???????

    
    return 0;
}

用输入创建数组后,我计算了分布权重 (obj) 的值。 现在我需要通过减法 (obj - w)(在示例中:22- w)来创建输出向量(新)。我是否应该仅使用 obj 的值创建一个新向量并减去 arr_w 的每个值?

我该怎么做?

使用 for 循环用你的数组减去它。

for (int i=0; i<num;i++) {
        printf("%.1f\n",obj-arr_w[i]);
    }