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
|
#include <iostream>
#include <vector>
#include <cstdio>
#include <iomanip>
#include <algorithm>
using namespace std;
//Declaring Constants
const int ZERO = 0;
const int ONE_HUNDRED = 100;
double median = 0.00;
vector<int> scores;
size_t mid = scores.size() / 2;
int size;
double findMedian(vector<int> &scores)
{
size_t mid = scores.size() / 2;
if (scores.size() == 0)
return 0;
// Make scores[mid] the mid'th element
nth_element(scores.begin(), scores.begin() + mid, scores.end());
if (size % 2 == 0)
{
// size is even. Need to average of scores[mid] and scores[mid-1]
nth_element(scores.begin(), scores.begin() + mid - 1, scores.end());
median = (scores[mid] + scores[mid - 1]) / 2;
}
else {
median = scores[mid];
}
}
int main()
{
int firstExam, secondExam, thirdExam;
int error;
cout << "Dr. DoLittle's Grading Program ..... (by Kirk Kelley)" << endl;
do
{
error = 0;
cout << "Please enter in the score for the first exam: ";
cin >> firstExam;
if (firstExam < 0 || firstExam > 100)
{
cout << "Please enter a valid score between 0 and 100" << endl;
cin >> firstExam;
cin.clear();
}
} while (error);
do
{
error = 0;
cout << "Please enter in the score for the second exam: ";
cin >> secondExam;
if (secondExam < 0 || secondExam > 100)
{
cout << "Please enter a valid score between 0 and 100" << endl;
cin >> secondExam;
cin.clear();
}
} while (error);
do
{
error = 0;
cout << "Please enter in the score for the third exam: ";
cin >> thirdExam;
if (thirdExam < 0 || thirdExam > 100)
{
cout << "Please enter a valid score between 0 and 100" << endl;
cin >> thirdExam;
cin.clear();
}
} while (error);
//declaring variable
int homework;
//initiating loop
while (!cin.eof())
{
homework = EOF;
cout << "\nEnter score for homework assignment (press Ctrl+Z to quit): ";
cin >> homework;
if (!cin.good())
if (homework == EOF)
break;
else
{
cout << "\nInvalid Input. Entry must be an integer." << endl;
cin.clear();
cin.ignore(std::numeric_limits<streamsize> ::max(), '\n');
}
else
{
if (homework >= ZERO && homework <= ONE_HUNDRED)
{
scores.push_back(homework);
}
else
{
cout << "\nInvalid Input. Grade must be between 0-100." << endl;
cin.clear();
cin.ignore(std::numeric_limits<streamsize> ::max(), '\n');
}
}
}
double median = 0.00;
size_t mid = scores.size() / 2;
// Make scores[mid] the mid'th element
nth_element(scores.begin(), scores.begin() + mid, scores.end());
median = scores[mid];
if (size % 2 == 0)
{
// size is even. Need to average of scores[mid] and scores[mid-1]
nth_element(scores.begin(), scores.begin() + mid - 1, scores.end());
median = (scores[mid] + scores[mid - 1]) / 2;
}
double totalPoints;
totalPoints = median + firstExam + secondExam + thirdExam;
cout << "The total points earned was " << totalPoints << endl;
cout << "The median homework score was " << median << endl;
cout << "The letter calculated letter grade is ";
system("Pause");
return 0;
}
|