2009-12-10 80 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]。它會失敗!

我會在輸入大小後分配數組。

相關問題