2009-12-10 58 views
0
#include <iostream> 
using namespace std; 

int main() 
{ 
int size = 0; 
int* myArray = new int [size + 1]; 
cout << "Enter the exponent of the first term: "; 
cin >> size; 
cout << endl; 
for (int i = size; i >= 0; --i) 
{ 
    cout << "Enter the coefficient of the term with exponent " 
    << i << ": "; 
    cin >> myArray[i]; 
} 
for (int i = size; i >= 0; --i) 
{ 
    cout << i << endl; 
} 
return 0; 
} 

为什么我在输入大于2时出现断言错误?这是多项式程序的前兆,其中阵列的下标是每项的幂,阵列[下标]处的元素是系数。为什么我得到断言错误?

+0

代码试图去做什么?你将myArray初始化为只有1个int的数组,然后读取大小,并尝试写入数组中的任意位置? – 2009-12-10 06:10:29

+0

谢谢大家!最初我刚刚收到一个编译错误,并将初始化的大小设置为0,但没有考虑清除错误。但是这造成了运行时错误。我通过不初始化大小并在输入大小后分配myArray来修复它。再次感谢你们! – Brandon 2009-12-10 06:15:16

+1

@Brandon:还有一件事,你的for循环是从'int i = size;'开始的,这将是一个无效索引。它应该从'size-1'开始 – Naveen 2009-12-10 06:17:14

回答

3

你的数组被分配为一个int [1]。它需要在之后分配您读取的大小值。

1

当size = 0时,您正在初始化您的数组,给出的数组大小为1 当您超出数组范围(1)时,会出现断言错误。

0

myArray的大小始终为0 + 1 = 1.我从用户输入的任何内容开始,并且您创建的第一个数组访问权限是myArray [i]。所以,假设用户输入5,你的数组的大小为1,你访问myArray [5]。它会失败!

我会在输入大小后分配数组。

相关问题