Neuling braucht Hilfe



  • Hallo liebe Gemeinde,

    ich versuche mich gerade in C++ und habe folgende Aufgabe (ist in englisch):

    Write a program to prompt the user to enter a grade between 0 and 100 If the grade is not between 0 and 100 display an error message Display the proper letter grade based on the number entered (A,B,C, D, F) Before determining the letter grade, do the following:
    o After entering the grade ask, the user if the grade is eligible for extra credit.
    o If the user enters y or Y add 5 points the grade entered
    o It the user enters n or N leave the grade alone
    o If they enter any other letter subtract 10 points for not following instructions

    So weit habe ich das ganze mal geschrieben:

    #include <iostream>
    using namespace std;

    int main()
    {
    float grade;
    char letter;
    char yesno;

    yesno = 5;

    cout << "Please enter a grade between 0 and 100: ";
    cin >> grade;

    cout << " Is the grade eligible for extra credit: ";
    cin >> yesno;

    if ( (grade > 100.0)||(grade < 0) )
    {
    cout << "Error not between 1-100.";
    }
    else if ( grade >= 90.0 )
    {
    letter = 'A';
    }
    else if ( grade >= 80.0 )
    {
    letter = 'B';
    }
    else if ( grade >= 70.0 )
    {
    letter = 'C';
    }
    else if ( grade >= 60.0 )
    {
    letter = 'D';
    }
    else
    {
    letter = 'F';
    }

    if ( yesno == Y)
    {

    }

    cout << "Your Grade is " << letter << "\t" << grade << "\n\n";

    system("pause");

    return(0);

    Was mir jetzt fehlt ist die Sache mit den 10 abziehen wenn die Eingabe nicht Nn oder Yy ist. Ob der Rest so richtig ist weiss ich nicht, ich gehe mal davon aus. Wie gesagt, ich bin ein absoluter Neuling und fange gerade erst an. Für Hilfe bei der Aufgabe wäre ich sehr dankbar. Mir fehlt irgendwie noch der richtige Durchblick.

    Viele Grüsse,
    Kurt35


  • Mod

    #include <iostream>
    using namespace std;
    
    int main()
    {
    float grade;
    char letter;
    char yesno;
    
    yesno = 5;  // Was soll das?
    
    cout << "Please enter a grade between 0 and 100: ";
    cin >> grade;
    
    cout << " Is the grade eligible for extra credit: ";
    cin >> yesno;
    
    // In den Anweisungen stand, dass man VOR der Notenauswertung prüfen soll, 
    // wie auf die zweite Frage geantwortet wurde. Ich ziehe daher die Abfrage 
    // von unten hierhin:
    
    if ( (yesno == 'Y') || (yesno=='y'))  // Du hattest die ' ' um das Y vergessen. Außerdem sollst du noch auf y prüfen.
    {
      // Dies überlasse ich dir
    }
    else if ( (yesno == 'N') || (yesno=='n'))
    {
      // Dies überlasse ich dir. Tipp: Hier muss man nichts tun
    }
    else
    {
     // Und hier kommt man hin, wenn weder n,N,y oder Y eingegeben wurden.
     // Dies überlasse ich dir.
    }
    
    // Den obigen if-Block kann man auch geschickter schreiben, aber ich 
    // will's mal einfach belassen. Gleiches gilt für den folgenden if-Block:
    
    if ( (grade > 100.0)||(grade < 0) )
    {
      cout << "Error not between 1-100.";
    }
    else if ( grade >= 90.0 )
    {
      letter = 'A';
    }
    else if ( grade >= 80.0 )
    {
      letter = 'B';
    }
    else if ( grade >= 70.0 )
    {
      letter = 'C';
    }
    else if ( grade >= 60.0 )
    {
      letter = 'D';
    }
    else
    {
      letter = 'F';
    }
    
    cout << "Your Grade is " << letter << "\t" << grade << "\n\n";
    
    system("pause");  // Unportabel! Siehe FAQ.
    
    return(0);
    


  • Zuerst sind die [ cpp] - Tags empfehlenswert, wenn du Code postest.

    Der richtige Ort für die Überprüfung auf Yes/No wäre direkt hinter cin >> yesno;. Hier musst du dann nur noch für die verschiedenen Fälle grade erhöhen oder erniedrigen.

    Darüber hinaus gibt es ein paar andere Punkte, die du noch überdenken solltest.
    1. grade ist ein float, obwohl int eigentlich besser passen sollte, damit 10.293 nicht als Eingabe durchgeht.

    2. if ( yesno == Y);
    Du meinst eher if (yesno == 'Y');

    3. return(0);
    Kannst du getrost weglassen.



  • Vielen Dank,
    ich werde das ganze dann nochmal nach Sepp`s Kommentaren überarbeiten. Dachte mir schon dass das ganze etwas umständlich gemacht ist und gewiss auch einfacher geht. Aber aller Anfang ist schwer :). Ich werde das mit der Zeit hoffentlich auch besser machen können, nicht zuletzt dank eurer Hilfe hier.
    Nochmals vielen Dank. Ich werde euch sicher bald mal wieder "belästigen" mit für euch einfachen Dingen, die für mich hoffentlich auch bald einfach sein werden.
    In diesem Sinne, schönen Abend noch.

    Viele Grüsse,
    Kurt35


Anmelden zum Antworten