I have a problem with my program and it has to do with my finding average function. The program goes like this:
The program will grade a series of exams and then print a grade report for students in a course. Input: An instructor has a class of students each of whom takes a multiple-choice exam with 10 questions. For each student in the class, there is one line in the input file. The line contains the answers that student gave for the exam. The input file named "grade_data.dat" will have the following format: line 1: the key for the exam (e.g.) = bccbbadbca
lines 2-n:a set of answers. You know you are done when you get to a line with no data. You will not know in advance how many exams you have to grade and you don't need to store the exam answers in your program. The program is to read the input file and grade each exam and print out the score for that exam. You will also keep track of how many students earned each score (0-10) and print a report after the grading. Output: Here is an example of how the output might appear. You will write the report to an output file named "grade_report.dat"
student 1 - 8
student 2 - 10
student 3 - 1
etc.
Final Report
------------
10 - 4
9 - 2
8 - 3
.
.
1 - 3
0 - 0
high score - 10
low score - 1
mean score - 6.25
So, when I try to calculate the mean of the scores the average gives me random numbers each time I open the output file. Here is the code:
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
double avgScore (int []);
int main(){
// open files
ifstream inFile;
inFile.open("grade_data.txt");
ofstream outputFile;
outputFile.open("grade_report.txt");
// read the answer key
string anskey;
getline( inFile, anskey );
int scores[11]; // index range is 0..10
int thisScore;
int count = 0;
string line;
while( getline( inFile, line ) && line != "" )
{
++count;
// compares answer key to each students score
thisScore =0; // initialize loop to 0
for( int i =0; i<10; ++i )
if( line[i] == anskey[i] )
++thisScore;
// updates score counter
scores[thisScore]++;
// outputs scores to "grade_report.txt" file
outputFile << "student " << count << " - " << thisScore << endl;
}
inFile.close();
outputFile << "\nThe Average Score is: "
<< avgScore( scores) << endl;
system("pause");
return 0;
}
double avgScore (int ary[] ) {
double total =0;
int numStudents =0;
for (int i =0; i < 11; i++){
numStudents += ary[i];
total+= ary[i]*i;
}
return total / numStudents;
}
Can someone help me?