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