C++ C++;在填充数组时遇到问题

C++ C++;在填充数组时遇到问题,c++,arrays,function,logic,C++,Arrays,Function,Logic,我的C++代码有一个问题,它涉及从用户接收输入并基于该输入填充数组。对于我的函数fillArray(),我需要一种方法来读取一行中的所有输入,并用这些输入填充数组,直到用户在末尾输入-1,而不是正整数,或者超过20个元素的阈值 例如,如果我输入 123456-1在一行中,我想让displayArray()函数输出123456,或者如果我写1234567881112141517181921,我想让displayArray()输出1234567810112151516181920 似乎每当我在末尾输

我的C++代码有一个问题,它涉及从用户接收输入并基于该输入填充数组。对于我的函数fillArray(),我需要一种方法来读取一行中的所有输入,并用这些输入填充数组,直到用户在末尾输入-1,而不是正整数,或者超过20个元素的阈值

例如,如果我输入
123456-1
在一行中,我想让displayArray()函数输出
123456
,或者如果我写
1234567881112141517181921
,我想让displayArray()输出
1234567810112151516181920

似乎每当我在末尾输入-1时,displayArray()都会输出如下内容
12345694837
或一些任意大的数字。如果有人能帮我解决这个问题,我将不胜感激,以下是我的代码:

#include <iostream>
using namespace std;

const int CAPACITY = 20;

void displayArray(int array[], int numElements)
{
    for (int i = 0; i < numElements; i++)
        cout << array[i] << " ";
    cout << endl;
}

void fillArray(int array[], int& numElements)
{
    int arrayPosition = 0;
    int testArrayPosition = 0;
    int testArray[CAPACITY];
    bool continueReading = true;

    cout << "Enter a list of up to 20 integers or -1 to end the list";
    do
    {
        cin >> valueEntered;

        if (valueEntered == -1)
        {
          continueReading = false;
        } else if (valueEntered != -1) {
            array[arrayPosition] = valueEntered;
            arrayPosition++;
        }
    } while ((continueReading==true) || (arrayPosition >= CAPACITY));

    numElements = (arrayPosition+1);
}

int main()
{
    int array[CAPACITY];
    int numArrayElements = 0;

    fillArray(array, numArrayElements);
    displayArray(array, numArrayElements);

    cout << "NumArrayElements: " << numArrayElements << endl;
}
#包括
使用名称空间std;
常数int容量=20;
void displayArray(整数数组[],整数元素)
{
对于(int i=0;icout您发布的代码没有编译。您在几个地方引用了一个变量
valueEntered
,但从未声明过它

此外,以下构造没有意义:

if (valueEntered == -1)
{
    [...]
}
else if (valueEntered != -1)
{
[...]
由于第二条if语句的条件表达式与第一条语句的条件表达式完全相反,因此第二条if语句是多余的,可以删除,如下所示:

if (valueEntered == -1)
{
    [...]
}
else
{
[...]
但是,由于您在问题中指出,除正整数(而不仅仅是-1)之外的任何内容都会导致程序结束,因此您需要将程序的该部分更改为以下内容:

if (valueEntered <= 0)
{
    continueReading = false;
}
else
{
    array[arrayPosition] = valueEntered;
    arrayPosition++;
}
if(valueEntered=CAPACITY));

应改为

while(继续读取和排列位置<容量)

线路呢

numElements=(数组位置+1);

应改为


numElements=arrayPosition;

请提供一个。您发布的代码未编译。您希望将do while循环结束时的条件更改为
while((继续读取和&arrayPosition
,也应将
数值设置为
arrayPosition
,而不是
arrayPosition+1