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
|
#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.0;
// change this to whatever it should be
// 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');
}
}
}
for (unsigned int i = 0; i < scores.size(); i++)
{
cout << "Scores: " << scores[i] << '\n';
}
double median = 0.00;
size_t mid = scores.size() / 2;
if (scores.size() == 0)
return 0.0;
// change this to whatever it should be
// 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];
}
cout << fixed << setprecision(2);
cout << "Median: " << median << endl;
cout << "First exam score: " << firstExam << endl;
cout << "Second exam score: " << secondExam << endl;
cout << "Third exam score: " << thirdExam << endl;
system("Pause");
return 0;
}
|