试图在用户初始化数组中插入一个值?

时间:2017-04-08 04:48:59

标签: c++ arrays

我必须编写一个带有6个函数的数组操纵器,这些函数都在main中调用。我编写了大部分函数,​​但我坚持使用的是用户从菜单中选择在指定索引处添加元素的函数,以及用户选择删除元素的另一个函数。这是我到目前为止对insertElement函数的代码:

int main()
// other cases;
       case 5:
            cout << "Enter a value to insert: ";
            cin >> insert;
            cout << "Enter a position to insert the value in: ";
            cin >> pos;
            pos--;
                if (pos < 0 || pos > size)
                {
                    cout << "Invalid Index " << endl;
                }
                else
                {
                    size = insertValue(arr, value, pos, size);
                    displayArray(arr, size);
                }
            break;

int insertValue(int arr[], int value, int pos, int size)

if (size == 10)
    cout << "Array full" << endl;
else
{
    int i;
    for (i = size - 1; i >= pos; --i) {
        arr[i + 1] = arr[i];
    }
    arr[i] = value;
}
cout << endl;
return size;

我认为我添加元素的功能是正确的,但是当我运行数组值为3 4 5,并告诉程序在索引1处添加数字4时,它会打印3 3 4,并且剩下5出阵列。如何让程序打印3 4 4 5? 谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

插入后需要将大小增加1。

int insertValue(int arr[], int value, int pos, int size)
{
    if (size == 10)
        std::cout << "Array full\n";
    else
    {
        int i;
        for (i = size - 1; i >= pos; --i)
        {
            arr[i + 1] = arr[i];
        }
        arr[pos] = value;
        ++size;
    }
    return size;
}

答案 1 :(得分:0)

尺寸问题看起来需要在插入后增加尺寸。

我认为在案例5中您可能还有另一个问题。您可以查找名为“insert”的变量,但是您将函数传递给名为“value”的变量。我假设'value'是另一种情况的变量,可能会在插入时引发问题。

〜祝你好运