从数组中删除元素并计算总和

时间:2019-06-16 16:44:08

标签: c++

如果可以将数字除以数组的元素数,则不能在数组中(例如:在具有10个元素的数组中,数字1,2,5和10不受欢迎)。因此,我需要在数组中找到所有这些元素并将其踢出。在数组的长度更改之后,然后可以在数组中“不欢迎”其他一些元素。我必须重复它,直到数组没有这些元素。最后,我必须计算剩余元素并将其打印出来。 (我正在使用C ++)

  • 我不知道如何从数组中删除元素,只是将value设置为0。 我先输入n(数组中元素的数量),然后输入所有这些元素。

所以,我已经尝试过了,但是我敢肯定还有更有效的方法:P这是代码:

int main()
{
    short int b = 0;
    short int n;
    int result = 0;
    cin >> n;
    int m = n;
    int numbers[n];
    for (int i = 0; i < n; i++) {
        cin >> numbers[i];
    }
    for (int i = 0; i < n; i++) {
     for (int j = 0; j<=n; j++) {
       if(numbers[j] != 0) {
        if(n % numbers[j] == 0) {
            numbers[j] = 0;
            b = b + 1;
        } }
    }
    n = n - b;
    b = 0;
}

for (int i = 0; i < m; i++) {
    result += numbers[i];
}

cout << result;

    return 0;
}

示例输入:10 1 2 3 4 5 6 7 8 9 10 示例输出:24

1 个答案:

答案 0 :(得分:0)

  

我不知道如何从数组中删除元素

不可能“从数组中删除元素”。 n元素数组以n元素开始其生命,在其整个生命周期中具有n元素,并以n元素结束其生命。无法更改数组的大小。


另一个问题:

cin >> n;
int numbers[n];

数组的大小必须是编译时间常数。 n不是编译时间常数。这不是格式正确的C ++程序。

必须动态分配运行时大小的数组。最简单的解决方案是使用std::vector。向量的大小可以更改,您可以使用std::vector::erase从其中删除元素。