1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
#include <iostream>
#include <iomanip>
#include <string>
//using namespace std; // <--- Best not to use.
// A recent post that is worth reading. http://www.cplusplus.com/forum/beginner/258335/
// <--- A better alternative
using std::cout;
using std::cin;
using std::endl;
using std::string;
// Prototypes
void gradeReport(string firstName, string lastName, string courseName, string semester,
double examOne, double examTwo, double examThree,
double labOne, double labTwo, double labThree,
double projectOne,
double quizOne, double quizTwo, double quizThree);
// ********** Used for testing. Can be removed later. ******************
void DisplayInput(string firstName, string lastName, string courseName, string semester,
double examOne, double examTwo, double examThree,
double labOne, double labTwo, double labThree,
double projectOne,
double quizOne, double quizTwo, double quizThree);
int main()
{
// Define variables
//double examOne, examTwo, examThree, labOne, labTwo, labThree, projectOne, quizOne, quizTwo, quizThree;
//string firstName, lastName, courseName, semester;
////double examGrades, labGrades, projectGrade, quizGrades; // <--- These variables not used in "main".
// ********** Used for testing. Can be removed later. ******************
double examOne{ 90 }, examTwo{ 95 }, examThree{ 99 },
labOne{ 100 }, labTwo{ 100 }, labThree{ 100 },
projectOne{ 96 },
quizOne{ 90 }, quizTwo{ 95 }, quizThree{ 98 };
string firstName{ "John" }, lastName{ "Smithe" }, courseName{ "CSI 101" }, semester{ "Summer" };
DisplayInput(firstName, lastName, courseName, semester,
examOne, examTwo, examThree,
labOne, labTwo, labThree,
projectOne,
quizOne, quizTwo, quizThree);
// ********************************************************
std::cout << std::fixed << std::showpoint << std::setprecision(2); // <--- Leave this line.
// Uncomment when done testing
// Get user input (The student's full name, course, semester, and grades.
//std::cout << "Enter your first and last name, leave a space between the names. ";
//std::cin >> firstName;
//std::cin >> lastName;
//std::cout << "Enter the name of your course: ";
//std::cin >> courseName;
//std::cout << "Enter the semester you are currently in: ";
//std::cin >> semester;
//std::cout << "Please enter the grade for your first exam (Must be 0-100): ";
//std::cin >> examOne;
//std::cout << "Please enter the grade for your second exam (Must be 0-100): ";
//std::cin >> examTwo;
//std::cout << "Please enter the grade for your third exam (Must be 0-100): ";
//std::cin >> examThree;
//std::cout << "Please enter the grade for your first Lab (Must be 0-100): ";
//std::cin >> labOne;
//std::cout << "Please enter the grade for your second Lab (Must be 0-100): ";
//std::cin >> labTwo;
//std::cout << "Please enter the grade for your third Lab (Must be 0-100): ";
//std::cin >> labThree;
//std::cout << "Please enter the grade for your project (Must be 0-100): " << std::endl;
//std::cin >> projectOne;
//std::cout << "Please enter the grade for your first quiz (Must be 0-100): ";
//std::cin >> quizOne;
//std::cout << "Please enter the grade for your second quiz (Must be 0-100): ";
//std::cin >> quizTwo;
//std::cout << "Please enter the grade for your third quiz (Must be 0-100): ";
//std::cin >> quizThree;
gradeReport(firstName, lastName, courseName, semester,
examOne, examTwo, examThree,
labOne, labTwo, labThree,
projectOne,
quizOne, quizTwo, quizThree); //Calling
// A fair C++ replacement for "system("pause");".
// The next line may not be needed. If you have to press enter to see the prompt it is not needed.
//std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // <--- Requires header file <limits>.
std::cout << "\n\n Press Enter to continue: ";
std::cin.get();
return 0;
}
void gradeReport(string firstName, string lastName, string courseName, string semester,
double examOne, double examTwo, double examThree,
double labOne, double labTwo, double labThree,
double projectOne,
double quizOne, double quizTwo, double quizThree)
{
constexpr double EXAMWEIGHT{ 0.10 }, LABWEIGHT{ 0.10 }, PROJECTWEIGHT{ 0.30 }, QUIZEWEIGHT{ 0.10 };
//int examOne{}, examTwo{}, examThree{}, labOne{}, labTwo{}, labThree{}, projectOne{}, quizOne{}, quizTwo{}, quizThree{};
double examAvg{}, labAvg{}, projectAvg{}, quizAvg{}, finalAverage{};
double examGrades{}, labGrades{}, projectGrade{}, quizGrades{};
//The formula below adds up the grades for each individual category.
examGrades = (examOne + examTwo + examThree) / 3.0; // <--- Changed.
labGrades = (labOne + labTwo + labThree) / 3;
projectGrade = (projectOne) / 1; // <--- () not needed, but OK if you leave them. Also the "/ 1" is not needed.
quizGrades = (quizOne + quizTwo + quizThree) / 3;
//The formula below takes the sum of each category above and multiplies it to the weight percentage.
//examAvg = examGrades * .30; // <--- I believe you want to use EXAMWEIGHT and not ".30" which should be "0.30"
examAvg = examGrades * EXAMWEIGHT;
labAvg = labGrades * .30;
projectAvg = projectGrade * .30;
quizAvg = quizGrades * .10;
//This formula adds up all of the weighted averages above in order to get the final average.
finalAverage = examAvg + labAvg + projectAvg + quizAvg;
//Display Results
/*The code below prints out the weight percentages per category, the average of each category,
the final weighted average, and the letter grade*/
std::cout << "\n\n Below will be the weight categories and the grades for each category.\n\n";
std::cout << " Exams: 30% (3 @ 10% each)" << '\n';
std::cout << " Labs: 30% (3 labs @ 10% each)" << '\n';
std::cout << " Project: 30% (1 project)" << '\n';
std::cout << " Quizzes: 10% (3 quizzes @ 3.33% each)" << '\n';
std::cout << "\n The average grade for exams is a: " << examAvg << '\n';
std::cout << " The average grade for labs is a: " << labAvg << '\n';
std::cout << " The average grade for the project is a: " << projectAvg << '\n';
std::cout << " The average grade for quizzes is a: " << quizAvg << '\n';
std::cout << "\n The Final Average for " << firstName << " " << lastName << " in " << courseName << " for the " << semester << " semester is: " << finalAverage << '\n' << std::endl;
if (finalAverage <= 100.0)
std::cout << " Your letter grade is an A." << std::endl;
else if (finalAverage <= 89.0)
std::cout << " Your letter grade is a B. " << std::endl;
else if (finalAverage <= 79)
std::cout << " Your letter grade is a C. " << std::endl;
else if (finalAverage <= 69)
std::cout << " Your letter grade is a D. " << std::endl;
else if (finalAverage <= 59)
std::cout << " Your letter grade is an F. " << std::endl;
else if (finalAverage < 0)
std::cout << " Invalid Data. " << std::endl;
else
std::cout << " Invalid Data. " << std::endl;
//if (finalAverage == 100.0)
// std::cout << " Your letter grade is an A. Extra message" << std::endl;
//else if (finalAverage < 100.0 && finalAverage >= 90.0) // <--- Catches anything between 90.0 and 99.99.
// std::cout << " Your letter grade is an A." << std::endl;
//else if (finalAverage < 90.0 && finalAverage >= 80.0) // <--- Catches anything between 80.0 and 89.99.
// std::cout << " Your letter grade is a B. " << std::endl;
}
|