Hello,

I need some help getting my program to read from a text file. Everything seems to be compiling fine but Im getting an error as soon as the program runs because, i believe, the information is not being inputted properly. Thanks for any help!

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <iomanip>

using namespace std; 

struct studentInfo
{
int id;
int score;
char grade;
};
const int MAX_NUM = 50;
studentInfo data[MAX_NUM];
bool successful = false;
bool readStuData(ifstream&, bool&, studentInfo data[]);
float getAverage(studentInfo data[], float& mean);
void assignGrades(studentInfo data[], float);
void reportResults(studentInfo data[]);

int main(int argc, char *argv[], float average)
{
ifstream inData("C:\Users\Owner\Desktop\scores.txt", ios::in);
readStuData(inData, successful, data);
getAverage(data, average);
cout<<"Student "<<data[0].id<<"'s test score is "<<data[0].score<<endl;
assignGrades(data, average);
reportResults(data);
cin.ignore();
cin.get();
return 0;
}

bool readStuData(ifstream& inData, bool& successful, studentInfo data[])
{

int number;


if(inData.fail())
{
cerr << "Error: Program cannot be run." << inData << endl;
successful = false;
return successful;
return EXIT_FAILURE;
}
else
{
successful = true;
return successful;
inData >> data[0].id >> data[0].score;
number = 0;
while (!inData.eof())
{
if (number=0, number<MAX_NUM, number++)
{ 
inData >> data[number].id >> data[number].score;
number++;
}
}
}
inData.close();
return successful;
}
float getAverage(studentInfo data[], float& mean)
{
float sum = 0.0;
int i;

for (i=0; i<MAX_NUM; i++)
{
sum = data[i].score + sum;
}
mean = sum / MAX_NUM;

return (mean);
}
void assignGrades(studentInfo data[], float average)
{
int i;
for (i=0; i<MAX_NUM; i++)
{
if ((data[i].score <= average + 10) || (data[i].score >= average - 10))
{
data[i].grade = 'S';
}
if (data[i].score > average + 10)
{
data[i].grade = 'O';
}
if (data[i].score < average - 10)
{
data[i].grade = 'U';
}
}
}
void reportResults(studentInfo data[])
{
ofstream out("C:\Users\Owner\Desktop\report.txt");
out << "STUDENT SCORES"<< setw(4) <<"Student ID #"<< setw(10)<<"Score"<< setw(14)<<"Grade"<< endl;
for (int i=0;i<MAX_NUM; i++)
out << setw(8) << data[i].id << setw(14)<< data[i].score << setw(14)<< data[i].grade << endl;
}

You have 2 return statements on line 46, 47. The one on line 47 will never get executed
Similarly you have a return statement on line 52. So the code from line 53 onwards cannot execute

You have 2 return statements on line 46, 47. The one on line 47 will never get executed
Similarly you have a return statement on line 52. So the code from line 53 onwards cannot execute

I removed the return statements but I'm still getting the same problem. What else am i missing? Thank you very much for your help!

I removed the return statements but I'm still getting the same problem. What else am i missing?

Formatting. Without formatting your code is extremely hard to follow.

If you suspect your input is not working properly, display what you input to see if you are right. That's the easiest way to tell when something is not working properly -- output the variables in question and see what they are.

This article has been dead for over six months. Start a new discussion instead.