从数组中删除枚举并计算总和

Deleting elemnt from array and calculating sum

本文关键字:计算 枚举 数组 删除      更新时间:2023-10-16

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

  • 我不知道如何从数组中删除元素,只是将值设置为 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

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

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


另一个问题:

cin >> n;
int numbers[n];

数组的大小必须是编译时常量。 n不是编译时常量。这不是一个格式良好的C++程序。

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