Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

use c++ Write a program that reads a text file containing a set of test scores.

ID: 3712607 • Letter: U

Question

use c++

Write a program that reads a text file containing a set of test scores. Each line in the file contains scores of a specific student. For example, the first line has the scores for the first student and so forth. Average the scores for each student and save them in a vector of final scores. Then sort the final scores to calculate the class average and median. Print the final scores sorted from least to greatest, the class average and median.

Detailed set of requirements:

1.File processing:

Program should try to open a file using a default file path first, then check if it was successful, if not, ask the user for a different file name/path and try again until it succeeds. Do not try to process a file that you could not open. Remember to close the file when done reading.

To make sure you process each student's scores separately, read each line from the file using the getline function. You can find an example on how to use getline here: http://www.cplusplus.com/forum/beginner/11304/ (Links to an external site.)Links to an external site.

Convert each line, which should be a string, to a string stream, so it can be used as a source for the individual test scores:

stringstream lineStream(line) // line is the string read from the file.

Read the individual scores from the lineStream variable as you would from an ifstream.

2 Store all final scores in a vector (not an array!).

To add values to a vector, use function push_back.

3 Sort the data using the sort function (you will need this for the median)

Refer to http://www.cplusplus.com/reference/algorithm/sort/ (Links to an external site.)Links to an external site. to learn how to use sort.

4 Calculate the average and median of the values in the vector.

Average is calculated by adding all data points then dividing by the number of data points.

Median is the data point in the middle after you have sorted them. If there is an odd number of data points, there will be only one in the middle. If there is an even number of data points, the median is the average of the two in the middle. Your algorithm must work for both cases.

Define separate functions to calculate and return average and median.

5 Define a seprate function to print the required info on the screen:

This function should receive the vector, the average and median as parameters.

Use a range-based for loop to print the scores in the vector.

6 Do not use global variables!

lab.txt

70 79 72

78 89 96

83 81 93

93 100 86

72 60 82

80 92 100

92 91 74

67 60 65

93 99 91

82 81 89

Explanation / Answer

PLEASE REFER BELOW CODE

#include<iostream>
#include<string>
#include<vector>
#include<fstream>
#include<sstream>
#include<algorithm>

using namespace std;

float average_score(std::vector<int> score)
{
int sum = 0;
//adding all scores in sum
for(unsigned int i = 0; i < score.size(); i++)
sum += score[i];

//return avergae
return sum/score.size();
}
float meadian_score(std::vector<int> score)
{
//if odd size array then return middle element else sum of two middle element
if(score.size() % 2)
return score[score.size() / 2];

else
{
return score[score.size() / 2] + score[(score.size() / 2) - 1];
}
}
void print_info(std::vector<int> score, float avg, float median)
{
cout<<"Students Score in sorted order"<<endl<<endl;
for(unsigned int i = 0; i < score.size(); i++)
cout<<score[i]<<endl;

cout<<endl;
cout<<"Average Score = "<<avg<<endl;
cout<<"Median = "<<median<<endl;
}
int main()
{
string filename;
ifstream infile;
std::vector<int> score;

//asking user for file name.If file is not present then asking again until correct file name is
//not provided
while(1)
{
cout<<"enter file name : ";
cin>>filename;

infile.open(filename.c_str());
if(infile.good())
break;
else
{
cout<<"file not present;Please try again"<<endl;
continue;
}
}
string line;
//reading file line by line and store the values in vector
while (std::getline(infile, line))
{
std::istringstream iss(line);
int a, b,c;
if (!(iss >> a >> b >> c)) { break; } // error
score.push_back(a);
score.push_back(b);
score.push_back(c);
}
//sort the score data
std::sort(score.begin(),score.end());
//calling function for average and median
float avg = average_score(score);
float median = meadian_score(score);

//priting final info on screen
print_info(score,avg,median);
infile.close(); //close file
return 0;

}

PLEASE REFER BELOW OUTPUT

enter file name : test_data.txt
file not present;Please try again
enter file name : lab.txt
Students Score in sorted order

60
60
65
67
70
72
72
74
78
79
80
81
81
82
82
83
86
89
89
91
91
92
92
93
93
93
96
99
100
100

Average Score = 83
Median = 165

Process returned 0 (0x0) execution time : 12.773 s
Press any key to continue.