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 より大きい入力でアサーション エラーが発生するのはなぜですか? これは、配列の添字が各項のべき乗であり、array[subscript] の要素が係数である多項式プログラムの前身です。

4

3 に答える 3

3

配列はint[1]に割り当てられます。サイズ値を読み込んだ、割り当てる必要があります。

于 2009-12-10T06:08:55.090 に答える
1

サイズ=0のときに配列を初期化し、配列サイズを1にします。配列の境界(1)の外に出ると、アサーションエラーが発生します。

于 2009-12-10T06:09:31.093 に答える
0

myArrayのサイズは常に0+1 = 1です。iはユーザーが入力したものから開始し、最初に配列にアクセスするのはmyArray[i]です。したがって、ユーザーが5と入力すると、配列のサイズは1になり、myArray[5]にアクセスします。失敗します!

サイズを入力した後で配列を割り当てます。

于 2009-12-10T06:09:47.967 に答える