2016-11-03 7 views
-1

Erhalte diesen Fehler von meinem Code. Ich hatte mir hier ähnliche Fragen angeschaut, konnte aber nicht sehen, warum meine nicht funktionierte (die meisten Antworten betrafen Zeichen und Leute, die "statt" benutzten, was mir nicht wirklich hilfreich war). Nicht sicher, was ich bin hier fehlt Edit: Um etwas genauer zu sein es das Zeichen „>“ ist in meiner if-Anweisung, die mir Mühe schenkt Mein Code ist unten:..Operandentypen sind nicht kompatibel ("double *" und "int")

int main() 
{ 
int numGrades = 0; 
double *scores = nullptr; 
double total = 0; 
cout << fixed << setprecision(1); 

cout << "How many grades would you like to enter? "; 
cin >> numGrades; 
if (numGrades < 0) 
{ 
    cout << "Error, please enter positive values only: "; 
    cin >> numGrades; 
} 
scores = new double[numGrades]; 
for (int x = 0; x <= numGrades; x++) 
{ 
    cout << "Please enter student " << (x + 1) << "'s score: "; 
    cin >> scores[numGrades]; 
    if (scores < 0 && scores > 100)  //ERROR IS HERE 
    { 
     cout << "Please enter a value between 0 and 100: "; 
     cin >> scores[numGrades]; 
    } 
} 
+0

Scores wird ein Zeiger, Sie zu dereferenzieren es vergessen haben – OMGtechy

+0

Außerdem laufen Sie am Ende des Arrays ab, was zu undefiniertem Verhalten und beschädigtem Speicher führt, weil Ihre 'for' -Schleife eine zu viele Wiederholungen durchführt. –

+0

Auch wenn Sie das getan haben, macht das, was Sie geschrieben haben, nicht viel Sinn. Meinst du Schleife durch das Array und finden Sie die Min/Max, dann vergleichen Sie mit 0/100? – OMGtechy

Antwort

1

cin >> scores[numGrades]; wird, um Daten außerhalb des zugewiesenen Speicher zuzuweisen; alles danach ist nicht definiertes Verhalten.

Meinten Sie cin >> scores[x];?

+0

Whoops! Guter Fang! Das ist genau das, was ich wollte. – Nick5227

+0

Das ist nicht das einzige Problem. Ich fahre, kann jetzt nicht mehr schreiben – Aganju

+0

Okay, danke dafür. Sicher sein! Keine SMS und fahren lol – Nick5227

Verwandte Themen