Given a multiple-choice test of 10 questions with 5 possible choices (A-E). The answers are given in a text file a long with the student names. Write a C++ program that does the following:
1.Reads the key answers to an array from the input file. The key is the first line in the file
3.Stores each the answers of each student in an array of (chars)
4.Sends this array to a function to compute number of correct answers per student
5.Computes % of correct answers for each student
6.Stores the scores in an array of (ints)
7.Displays the list of the students along with their scores (counts and percentages)

My code is not reading the names and grades correctly. I am also unsure of how to calculate the grades of the students. Here is the beginning of my code below.

``````# include <cmath>
# include <iostream>
# include <iomanip>
# include <cstring>
# include <cctype>
# include <fstream>
# include <string>
using namespace std;
int main()
{
string x;
string temp = {x};
char y = 0;
char key = {y};

string a;
string name = {a};
char b = 0;

ifstream fin;
fin.open("fin.txt");

for( int i = 0; i < 10; ++i)
{
fin >> x;
fin >> y;

}

while (fin)
{
for( int j = 0; j < 10; ++ j)
{
fin >> a;
fin >> b;

;
;
;
;
;
;
;
;
;
;

// Need some type of function to cout their grade
}

}

system ("pause");
return 0;
}``````

``````string x;
string temp = {x};
char y = 0;
char key = {y};

string a;
string name = {a};
char b = 0;

This code doesn't make much sense. First off, there is no advantage of declaring an array with a size …

## All 2 Replies

``````string x;
string temp = {x};
char y = 0;
char key = {y};

string a;
string name = {a};
char b = 0;

This code doesn't make much sense. First off, there is no advantage of declaring an array with a size of one; it is in effect a the same as a single variable. Second, you are assigning to this array a string value that isn't initialized, so you are in effect getting garbage for the assigned value. Third, you are then assigning a single value (again, uninitialized) to a 10-element array, which AFAIK shouldn't compile as an initialization at all.

I suspect that the problem is that you are confusing the mathematical concept of equality with the programming concepts of assignment and initialization. THis seems borne out by the code following it:

``````for( int j = 0; j < 10; ++ j)
{
fin >> a;
fin >> b;

;