/*---
    CS 111 - Week 11 Lecture 2 - 2025-11-06

    Using cin in a main function that provides
        an INTERACTIVE front-end for function 
        describe_grade (previously designed and 
        tested in Week 11 - Lecture 1's 
        111lect11-1.cpp)
    (so notice that I copied over the comment with 
        describe_grade's signature, purpose, and
        bool test expressions as well as its 
        function definition)

    compile using:
        g++ 111lect11-2.cpp -o 111lect11-2
    run using:
        ./111lect11-2

    by: Sharon Tuttle
    last modified: 2025-11-06
---*/

#include <cstdlib>
#include <iostream>
#include <string>
#include <cmath>
using namespace std;

/*===
    signature: describe_grade: char -> string
    purpose: expects a grade expressed as a char,
        and returns a string description for that grade,
        as follows:

        grade           description
        =====           ===========
        'A' or 'a'      "Excellent"
        'B' or 'b'      "Very Good"
        'C' or 'c'      "Acceptable"
        'T' or 't'      "Try Again"
        anything
            else        "Unrecognized Grade"
    tests:
        describe_grade('A') == "Excellent"
        describe_grade('B') == "Very Good"
        describe_grade('C') == "Acceptable"
        describe_grade('T') == "Try Again"
        describe_grade('a') == "Excellent"
        describe_grade('b') == "Very Good"
        describe_grade('c') == "Acceptable"
        describe_grade('t') == "Try Again"
        describe_grade('P') == "Unrecognized Grade"
===*/

string describe_grade(char letter_grade)
{
    string grade_descr = "";

    switch(letter_grade)
    {
        case 'A':
        case 'a':
            grade_descr = "Excellent";
            break;

        case 'B':
        case 'b':
            grade_descr = "Very Good";
            break;

        case 'C':
        case 'c':
            grade_descr = "Acceptable";
            break;

        case 'T':
        case 't':
            grade_descr = "Try Again";
            break;

        default:
            grade_descr = "Unrecognized Grade";
    }

    return grade_descr;
}

/*---
   interactive front end for describe_grade
---*/

int main()
{
    char desired_grade;

    cout << "Enter a desired letter grade: ";

    cin >> desired_grade;
    
    cout << "The description for that grade is: "
         << describe_grade(desired_grade) << endl;

    return EXIT_SUCCESS;
}