//Cameron Pham CS1A Chapter 7, p. 447, #11
//
/******************************************************************************
* TRACK STUDENT GRADES
* ______________________________________________________________________________
* This program accepts a string value for student names and floating point
* values for four test scores for each student. It displays a report
* containing each student's average test score and corresponding letter grade.
* ______________________________________________________________________________
* INPUT
* Name // Name of student
* Score // Score of test that student got
*
* OUTPUT
* Average // Student's average test score
* Letter grade // Corresponding letter grade for student
*******************************************************************************/
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
// Create an array to store the five student names.
const int SIZE = 5;
string studentNames[SIZE];
// Create an array to store each student's letter grade.
char letterGrades[SIZE];
// Create a two-dimensional array to store four test scores
// for each of the five students.
const int TESTS = 4;
float testScores[SIZE][TESTS];
// Store each student's average test score.
float averages[SIZE];
// Get the name and four test scores for each student.
for (int i = 0; i < SIZE; i++)
{
cout << endl << "Enter the name of student "
<< i + 1 << ": ";
cin >> studentNames[i];
// Get the student's four test scores.
for (int j = 0; j < TESTS; j++)
{
cout << "Enter test score " << j + 1
<< " for " << studentNames[i] << ": ";
cin >> testScores[i][j];
// Validate that the test score is between 0 and 100.
while (testScores[i][j] < 0 ||
testScores[i][j] > 100)
{
cout << "Invalid score. Enter a score "
<< "between 0 and 100: ";
cin >> testScores[i][j];
}
}
}
// Calculate each student's average and determine their letter grade.
for (int i = 0; i < SIZE; i++)
{
float total = 0;
// Add the student's four test scores.
for (int j = 0; j < TESTS; j++)
{
total += testScores[i][j];
}
// Calculate the average test score.
averages[i] = total / TESTS;
// Assign a letter grade based on the average.
if (averages[i] >= 90)
{
letterGrades[i] = 'A';
}
else if (averages[i] >= 80)
{
letterGrades[i] = 'B';
}
else if (averages[i] >= 70)
{
letterGrades[i] = 'C';
}
else if (averages[i] >= 60)
{
letterGrades[i] = 'D';
}
else
{
letterGrades[i] = 'F';
}
}
// Display the grade report.
cout << "\n---------- Grade Book Report ----------\n";
cout << left << setw(20) << "Student Name"
<< setw(15) << "Average"
<< "Letter Grade" << endl;
cout << "---------------------------------------\n";
// Display each student's name, average, and letter grade.
for (int i = 0; i < SIZE; i++)
{
cout << left << setw(20) << studentNames[i]
<< setw(15) << fixed << setprecision(2)
<< averages[i]
<< letterGrades[i] << endl;
}
return 0;
}