/*--- Examples for CS 111 - Week 10 lecture 2 by: Sharon Tuttle last modified: 2026-10-29 ---*/ #include <cstdlib> #include <iostream> #include <string> #include <cmath> using namespace std; /*=== signature: describe_grade: char -> string purpose: expects a single-letter letter grade and returns its description, as follows: 'A' or 'a': Excellent 'B' or 'b': Very Good 'C' or 'c': Acceptable 'T' or 't': Try Again If the given letter grade is not one of these, return the description "Unrecognized Grade" tests: describe_grade('a') == "Excellent" describe_grade('A') == "Excellent" describe_grade('b') == "Very Good" describe_grade('B') == "Very Good" describe_grade('c') == "Acceptable" describe_grade('C') == "Acceptable" describe_grade('t') == "Try Again" describe_grade('T') == "Try Again" describe_grade('Q') == "Unrecognized Grade" ===*/ string describe_grade(char letter_grade) { /*=== if-else-if pattern version if ((letter_grade == 'A') || (letter_grade == 'a')) { return "Excellent"; } else if ((letter_grade == 'B') || (letter_grade == 'b')) { return "Very Good"; } else if ((letter_grade == 'C') || (letter_grade == 'c')) { return "Acceptable"; } else if ((letter_grade == 'T') || (letter_grade == 't')) { return "Try Again"; } else { return "Unrecognized Grade"; } ===*/ // version using a switch statement switch(letter_grade) { case 'A': case 'a': return "Excellent"; // OK this is not strictly necessary HERE, // but including so you remember it frequently // IS needed in a switch statement break; case 'B': case 'b': return "Very Good"; break; case 'C': case 'c': return "Acceptable"; break; case 'T': case 't': return "Try Again"; break; default: return "Unrecognized Grade"; } } /*--- test the functions above ---*/ int main() { cout << boolalpha; cout << "*** Testing: describe_grade ***" << endl; cout << (describe_grade('a') == "Excellent") << endl; cout << (describe_grade('A') == "Excellent") << endl; cout << (describe_grade('b') == "Very Good") << endl; cout << (describe_grade('B') == "Very Good") << endl; cout << (describe_grade('c') == "Acceptable") << endl; cout << (describe_grade('C') == "Acceptable") << endl; cout << (describe_grade('t') == "Try Again") << endl; cout << (describe_grade('T') == "Try Again") << endl; cout << (describe_grade('Q') == "Unrecognized Grade") << endl; cout << "Just for fun: " << describe_grade('T') << endl; cout << endl; cout << "checking answers for in-class substr paper activity" << endl; cout << "===================================================" << endl; const string DB_INTRO = "CS 325"; cout << (DB_INTRO.substr(0, 2) == "CS") << endl; cout << (DB_INTRO.substr(3) == "325")<< endl; cout << (DB_INTRO.substr(1, 27) == "S 325") << endl; return EXIT_SUCCESS; }