如何将用户输入的数组值移动到数组的末尾并将其设置为0?

时间:2019-04-17 15:14:05

标签: c++

我需要的是make程序,其中用户在数组中输入10个整数,然后再输入一个整数,该整数需要用0替换并移至最终数组的末尾。

尝试了我可以在google中找到的所有内容,但仍然无法正常工作。

#include <iostream>
using namespace std;

int main ()
{
    int i, array[10], v;

cout << "Please enter 10 integer elements of an array!\n" << endl;
    for (int i = 0; i < 10; i++)
    {
        cout << "array[" << i << "]: ";
        cin >> array[i];
    }

    cout << endl;
cout << "Now, enter the integer, 'V': ";
    cin >> v;
    cout << endl;
cout << "The final array is:\n" << endl;

    for (int i = 0; i < 10; i++)
    {
        cout << "array[" << i << "]: " << array[i] << endl;
        if (array[i] == v)
        {
            v = 0;
        }
    }
    for (i = 0; i < 1; i++)
    cout << "array[" << array[8] << "]: " << v << endl;

这是我完成的工作,差不多完成了,但是不知道如何使之正确,当用户输入与主数组相同的值时,最终只能看到10个数组值,而不是11个。

there is final result, how it should look like 因为我想您可能不会从此描述中了解我需要的任何内容,因为我的英语是垃圾; /

3 个答案:

答案 0 :(得分:0)

要将数组中的i:th值替换为零,请写array[i] = 0,而不要写v = 0
要将第i:th个元素复制到最后一个位置,请编写array[9] = array[i]

此外,您应该先修改阵列,然后再打印,而不是随手打印。

答案 1 :(得分:0)

这是用于在数组中移动所有相等元素的代码,您可以引用

#include <iostream>
using namespace std;

int main ()
{
    const int N = 10;
    int array[N];
    int v;

    cout << "Please enter 10 integer elements of an array!\n" << endl;
    for (int i = 0; i < N; i++)
    {
        cout << "array[" << i << "]: ";
        cin >> array[i];
    }

    cout << endl;
    cout << "Now, enter the integer, 'V': ";
    cin >> v;
    cout << endl;
    cout << "The final array is:\n" << endl;

    int pos = 0;
    // move element which are not equal backward
    for (int i = 0; i < N; i++)
    {
        if (array[i] != v)
        {
            array[pos] = array[i];
            ++pos;
        }
    }
    // set value in remaining position to 0
    for ( ; pos < N; ++pos){
        array[pos] = 0;    
    }

    // print output
    for (int i = 0; i < N; i++){
        cout << "array[" << i << "]: " << array[i] << endl;    
    }


}

答案 2 :(得分:0)

#include <iostream>
using namespace std;

int main () {

    const size_t MAX_SIZE = 10;
    size_t i = 0, array[MAX_SIZE], v;

    cout << "Please enter 10 integer elements of an array!\n" << endl;

    for (int i = 0; i < MAX_SIZE; i++) {
        cout << "array[" << i << "]: ";
        cin >> array[i];
    }

    cout << endl;
    cout << "Now, enter the integer, 'V': ";
    cin >> v;
    cout << endl;
    cout << "The final array is:\n" << endl;

    while (true)
    {
        if (i == MAX_SIZE) {
            break;
        }

        if (array[i] == v) {

            for (size_t j = i; j < MAX_SIZE - 1; j++) {
                array[j] = array[j + 1];
            }

            array[MAX_SIZE - 1] = 0;
            continue;
        }

        cout << "array[" << i << "]: " << array[i] << endl;

        i++;
    }

}

_

您也可以使用for循环来实现它。

for (size_t i = 0; i < MAX_SIZE; /*EMPTY*/) {

    if (array[i] == v)
    {
        for (size_t j = i; j < MAX_SIZE - 1; j++) {
            array[j] = array[j + 1];
        }

        array[MAX_SIZE - 1] = 0;
        continue;
    }

    cout << "array[" << i << "]: " << array[i] << endl;

    i++;
}

_

Please enter 10 integer elements of an array!

array[0]: 1
array[1]: 1
array[2]: 1
array[3]: 2
array[4]: 1
array[5]: 1
array[6]: 1
array[7]: 1
array[8]: 1
array[9]: 1

Now, enter the integer, 'V': 1

The final array is:

array[0]: 2
array[1]: 0
array[2]: 0
array[3]: 0
array[4]: 0
array[5]: 0
array[6]: 0
array[7]: 0
array[8]: 0
array[9]: 0

_

Please enter 10 integer elements of an array!

array[0]: 1
array[1]: 1
array[2]: 1
array[3]: 2
array[4]: 1
array[5]: 1
array[6]: 1
array[7]: 1
array[8]: 1
array[9]: 1

Now, enter the integer, 'V': 2

The final array is:

array[0]: 1
array[1]: 1
array[2]: 1
array[3]: 1
array[4]: 1
array[5]: 1
array[6]: 1
array[7]: 1
array[8]: 1
array[9]: 0