-1

ユーザーが入力しなければならない2つの多項式を乗算します。

最初のステップ(ユーザーからの情報の取得)で、次のエラーが発生しました:

Unhandled exception at 0x00a315cb in linked polinomials.exe:
  0xC0000005: Access violation writing location 0x00000000.

その後、このエラーが発生しました。多項式の他の要素を入力したいと思います。

struct polynomial{

    float coef ;
    int exp ;
    polynomial *next ;
} *first, *second ,*result;
first = new(polynomial);
   //init first
first ->coef = 0;
first->exp = 0 ;
first->next = 0;
while(ch != 'n')
{
    cin >> temp_c ;
    cin >> temp_e ;
    first->coef = temp_c;
    first->exp = temp_e;
    cout << "Do you want to enter another ? (y or n) :" << endl;
    ch = getch();
    first = first->next;
}
4

4 に答える 4

0
first = first->next;

この操作の前に、次のような新しいリンクにメモリを割り当てる必要があります。

first->next = new polynomial();

その後になって初めて書くことができます

first = first->next;
于 2012-07-17T08:17:23.447 に答える
0

最初の反復では:

first = first->next;

に割り当てるのfirstは、それが最初NULLのことだからです。first->next割り当てる前に、スペースを割り当てる必要があります。

first->next = new polynomial;
first = first->next;

また、最初のノードへのポインタを失ってもよろしいですか?

于 2012-07-17T08:14:18.403 に答える
0

リスト全体にメモリを割り当てませんでした。次のように書く必要があります。
first->next = new polynomial();
first = first->next;

それ以外の場合は、アドレスでメモリを読み取ろうとしていNULLます。

于 2012-07-17T08:15:05.417 に答える
0

代わりに、次のことを行う必要があります。

second = new(polynomial);
first->next=second;
first=second;
于 2012-07-17T08:15:47.677 に答える