Warum erhalte ich eine Assertion Fehler entdeckt?
-
18-09-2019 - |
Frage
#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;
}
Warum erhalte ich eine Assertion Fehler bei der Eingabe von mehr als 2? Dies ist die Vorstufe zu einem Polynom-Programm, wo der Index des Arrays ist die Leistung eines jeden Begriffs und das Element an array [Index] ist der Koeffizient.
Lösung
Ihr Array zugeordnet ist ein int sein [1]. Es muss zugeteilt nach Sie in dem Größenwert zu lesen.
Andere Tipps
Sie initialisieren Array, wenn size = 0, so dass eine Array-Größe von 1 Sie erhalten Ihre Behauptung Fehler, wenn Sie außerhalb der Array-Grenzen gehen (1).
myArray immer hat Größe 0 + 1 = 1 i an beginnt, was der Benutzer eingegeben wird, und das erste Array-Zugriff Sie myArray machen ist [i]. Also, sagen die Benutzereingaben 5, Array hat eine Größe 1 und Ihnen den Zugriff myArray [5]. Es wird scheitern!
Ich würde die Anordnung nach der Eingabe Größe zuordnen.