2017-10-06 5 views
-4

In meinem Notendurchschnittscode habe ich die Buchstabengrade a, b, c, d und f, aber wenn ich versuche, es auszuführen, war es, dass mein Brief nicht deklariert wurde dieser Bereich. Ich weiß nicht was das bedeutet.'c' wurde nicht in diesem Bereich angegeben

Hier ist mein Code:

#include<iostream> 

using namespace std; 

string average(int g); 

int main() 
{ 
    int grade; 

    cout << "Enter your grade:" << endl; 
    cin >> grade; 

    cout << "Your grade is a" << average(grade) << "!" << endl; 

    return 0; 
} 

string average(int g) 
{ 
    if (g >= 90 && g <= 100) 
    { 
     return a; 
    } 
    else if(g >= 80 && g <90) 
    { 
     return b; 
    } 
    else if (g > 70 && g < 80) 
    { 
     return c; 
    } 
    else if (g == 70) 
    { 
     return d; 
    } 
    else if (g < 70) 
    { 
     return f; 
    } 

    return 0; 
} 
+0

versuchen Sie 'return" a "' anstelle von 'return a'. Im ersten Fall gibt es den Notenwert/Text "a" zurück. Im zweiten Fall (in Ihrem ursprünglichen Code) versucht es nach der Variablen "a" zu suchen, die nicht im Gültigkeitsbereich ist. Und das ist die Beschwerde, die es auf dich wirft. – kaza

+0

Das behebt das Problem nicht, aber Sie brauchen nicht all diese '' ''' in der' if ... else if'-Ladder. Wenn "g" 95 ist, wird die erste Verzweigung genommen, und die "g <90" in der zweiten Verzweigung hat keine Wirkung. Das gleiche gilt für den zweiten Test in allen anderen Ausdrücken. Also: 'if (g> = 90) ... sonst if (g> = 80) ... sonst if (g> = 70) ... sonst ...' –

Antwort

-1

Sie haben nirgendwo erklärt Sorten - a, b, c, d, e, f in Ihrem Programm. Wie würde der Compiler wissen, dass a für grade-a steht, b für grade-b und so weiter.

Sie können sich wahrscheinlich ENUM verwenden Noten zu erklären, wie diese -

enum grades {a='a', b='b', c='c', d='d', e='e', f='f'}; 

Es gibt andere Wege, dies zu tun. Was immer Sie verwenden, um Ihr Ziel zu erreichen, müssen Sie Ihr Programm basierend auf Ihrer Entscheidung ändern.

Verwandte Themen