这是任务:
您的目标是编写一个程序,以相反的顺序显示输入的一系列整数。你的程序将提示用户输入该列表中的值的数目,并将其用作动态的大小在该提示之后声明的数组。
数组size
未知,value
是指针,必须在循环之前分配sub
。
以下是步骤:
- 声明变量,但不要"将指针的存储器分配给存储器";。在提示用户输入值后执行此操作
- 提示用户输入要列出的值的数目。(如果用户输入负数,则必须有一条消息(。然后使用关键字
new
作为指针 - 提示用户输入值
- 反向显示值
- 对动态数组使用关键字
delete
当我试图运行程序时,错误是:
错误:ISO C++禁止指针和整数之间的比较[-fpermission]
for(int sub = 0; sub < size; size--)
--------------------------------------------^
错误:需要作为递减操作数的左值for (int sub = 0; sub > size; size--)
-----------------------------------------------------------^
此外,我不确定关键字new
的作用。
#include <iostream>
using namespace std;
int main()
{
int size, array;
cout << "How many values would you like to enter? ";
cin >> array;
int value;
int *array = new int[size];
if (size > 0)
{
for (int sub = 0; sub < size; size++)
{
cout << "Enter value #" << size << ": ";
cin >> value;
}
while (size > 0);
}
else
{
while (size < 0)
{
cout << "Size must be positive." << endl;
cout << "How many values would you like to enter? ";
cin >> size;
}
}
cout << "Here are the values you entered in reverse order: n";
for (int sub = size - 1; sub >= 0; size--)
{
cout << "Value #" << size << " :" << value << endl;
}
delete[] array;
return 0;
}
PS:我知道size
应该是未知的,但我遇到了另一个错误,说
"size"的存储大小未知
因此,我添加数字以避免该错误
编辑:所以我通过@MikeCAT更改了代码,但这个错误显示terminate called after throwing an instance of 'std::bad_array_new_length what(): std::bad_array_new_length
。这是因为我为size
输入了一个负数,这应该发生在if
语句中。此外,在用户输入要输入的值数量后,我需要size
从1开始,但size
始终从输入的数字开始。
正如任务所说,您应该
- 读取值
- 使用读取的值作为其大小来分配动态数组
- 读取数组的数字
#include <iostream>
int main(void) {
// read a number (size of a dynamic array)
int numElements;
std::cin >> numElements;
// allocate a dynamic array
int *array = new int[numElements];
// read values for the dynamic array
for (int i = 0; i < numElements; i++) {
std::cin >> array[i];
}
// print the values in reversed order
for (int i = numElements - 1; i >= 0; i--) {
std::cout << array[i] << 'n';
}
// de-allocate the array
delete[] array;
// exit normally
return 0;
}
省略了错误处理和非本质消息。尝试添加它们。