Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <cstdlib>
- #include <fstream>
- #include <sstream>
- #include <iomanip>
- using namespace std;
- void readFile(string filename, vector<double> &finals);
- double average(const vector<double> &finals);
- double median(vector<double> finals);
- void display(const vector<double> &finals, double avg, double median);
- int main()
- {
- string filename;
- vector<double> final_scores;
- double avg, med;
- cout << "Enter input filename: ";
- cin >> filename;
- readFile(filename, final_scores);
- avg = average(final_scores);
- med = median(final_scores);
- display(final_scores, avg, med);
- }
- void readFile(string filename, vector<double> &finals)
- {
- ifstream infile(filename.c_str());
- if(infile.fail())
- {
- cout << "ERROR: could not open input file " << filename << endl;
- exit(1);
- }
- string line;
- double avg, score;
- int n;
- while(getline(infile, line)) //get the line of scores for a student
- {
- avg = 0;
- n = 0;
- stringstream lstream(line);
- while(lstream >> score) //calculate average of scores for a single student and push the average into finals
- {
- avg += score;
- n++;
- }
- avg /= n;
- finals.push_back(avg);
- }
- infile.close();
- }
- double average(const vector<double> &finals)
- {
- double avg = 0;
- for(int i = 0; i < finals.size(); i++)
- avg += finals[i];
- avg /= finals.size();
- return avg;
- }
- double median(vector<double> finals)
- {
- double median;
- int mid = finals.size() / 2;
- sort(finals.begin(), finals.end());
- if(finals.size() % 2 == 1) //odd length
- median = finals[mid];
- else
- median = (finals[mid] + finals[mid-1])/2; //average of middle 2 values
- return median;
- }
- void display(const vector<double> &finals, double avg, double median)
- {
- cout << "The scores for the students is" << endl;
- cout << fixed << setprecision(2);
- for(int i =0; i < finals.size(); i++)
- {
- cout << (i+1) << ". " << finals[i] << endl;
- }
- cout << endl << "The average score is " << avg << endl;
- cout << "The median score is " << median << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement