2016-03-26 7 views
-1

Also hier ist die Frage, die ich arbeiteWhile Schleife für die Überprüfung der Noten ist ungültig funktioniert aus irgendeinem Grund nicht

Noten mit Eingabe-Validierung (C++). Ändern Sie Klassenprogramme mit Arrays und Funktionen. (das Programm sollte minimal Funktionen für Durchschnitt, Min, Max, # über dem Durchschnitt, etc. insgesamt 4 Funktionen haben) Fügen Sie Logik (zum Haupt), so dass, wenn der Benutzer eine ungültige Note (niedriger als Null, höher als 100) eingibt , wird dem Benutzer eine Fehlermeldung angezeigt und es wird ihm erlaubt, die Note erneut einzugeben. Dies wird so lange wiederholt, wie der Benutzer ungültige Noten eingibt. Sie benötigen eine While-Schleife.

Wenn ich eine Nummer kleiner als 0 eingeben, wird es nicht den Code in der while-Schleife aus irgendeinem Grund ausgeführt wird, auch meine Minimum-Funktion funktioniert nicht entweder

Hier ist der Code, den ich für die Hauptfunktion aufweisen und die minimale Funktion

#include <iostream> 
using namespace std; 

double average(double x[], int n); 
double maximum(double x[], int n); 
double minimum(double x[], int n); 
int nAboveAvg(double x[], int n); 



int main() 
{ 
    double grades[50]; 
    int ngrades; 

    cout<<"How many grades? (max = 50) "; 
    cin>>ngrades; 

    //create for loop to get grades from user 
    for(int i = 0; i<ngrades; i++) 
    { 
      cout<<"Enter grade "; 
     cin>> grades[i]; 
     while(grades[i]< 0 || grades[i] > 100) 
     { 
      cout<<"Invalid grade- please enter again"<<endl; 
      cin>>grades[i]; 
     } 
    } 

    //call the functions 
    double avg = average(grades, ngrades); 
    double max = maximum(grades, ngrades); 
    double min = minimum(grades, ngrades); 
    int nAbove = nAboveAvg(grades, ngrades); 
    //display results 

    cout << "Average = " << avg << endl; 
    cout << "# above average = " << nAbove << endl; 
    cout<<"Max value is = "<<max<<endl; 
    cout<<"Min value is = "<<min<<endl; 


} 
//Minimum function 

double minimum(double x[], int npts) 
{ 

    double min = x[0]; 

    for(int i = 0; i < npts; i++) 
    { 
     if(x[i] < min) 
     { 

      min = x[i]; 
     } 
    } 
    return min; 
} 
+0

Ihr Code ist in Ordnung. Was ist dein Problem? – DimChtz

+0

"weniger als 0" - wie sieht Ihre tatsächliche Eingabe aus? – Ian

+0

Ihre minimale Funktion ist in Ordnung. Stellen Sie sicher, dass Sie den Wert weniger als 0 für 'grade [i]' nicht für 'ngrades eingeben: p .. wollte nur sicher .. –

Antwort

-2

Ihr Code scheint für mich zu arbeiten. Haben Sie versucht, es neu zu erstellen?

http://i.stack.imgur.com/X8XiX.png

+0

Hmm, das ist seltsam, ich habe auch, aber es eingehalten funktioniert immer noch nicht für mich – user2969508

+0

Wie viele Noten? (Max = 50) 3 eingeben Grad -1 eingeben Grad 2 eingeben Grad 4 Durchschnitt = 1.66667 # überdurchschnittlich = 2 Max-Wert = 4 ------------- ------------------- Prozess beendet nach 7.955 Sekunden mit Rückgabewert 0 Drücken Sie eine beliebige Taste, um fortzufahren. . . – user2969508

+0

Wie viele Noten? (Max = 50) 3 eingeben Grad -1 eingeben Grad 2 eingeben Grad 4 Durchschnitt = 1.66667 # überdurchschnittlich = 2 Max-Wert = 4 ------------- ------------------- Prozess beendet nach 7.955 Sekunden mit Rückgabewert 0 Drücken Sie eine beliebige Taste, um fortzufahren. . . – user2969508

Verwandte Themen