数组和指针+错误



这是任务:

您的目标是编写一个程序,以相反的顺序显示输入的一系列整数。你的程序将提示用户输入该列表中的值的数目,并将其用作动态的大小在该提示之后声明的数组。

数组size未知,value是指针,必须在循环之前分配sub

以下是步骤:

  1. 声明变量,但不要"将指针的存储器分配给存储器";。在提示用户输入值后执行此操作
  2. 提示用户输入要列出的值的数目。(如果用户输入负数,则必须有一条消息(。然后使用关键字new作为指针
  3. 提示用户输入值
  4. 反向显示值
  5. 对动态数组使用关键字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语句中。此外,在用户输入要输入的值数量后,我需要size1开始,但size始终从输入的数字开始。

正如任务所说,您应该

  1. 读取值
  2. 使用读取的值作为其大小来分配动态数组
  3. 读取数组的数字
#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;
}

省略了错误处理和非本质消息。尝试添加它们。

相关内容

  • 没有找到相关文章

最新更新