getline(inFile, st[i].name)
while (inFile){
        inFile >> st[i].id
        >> st[i].eng101
        >> st[i].hist201;


        getline(inFile, st[i].name);

The above code only reads the first line of my input file, and the rest prints out zeros.

My input file is set up like:

John Wall

The output looks like:
Student Name ID Eng101-Grade Hist201
John Wall 345.. 95 66
0 0 0
0 0 0

Any suggestions on why my loop only outputs the first struct correctly from my input file, and the rest are zeros?

Edited 6 Years Ago by xcarbonx: n/a

alright thanks a lot for the help that worked..

my other only problem is calculating the average for each grade in the file.

like i said the input file is set up such as:

id #
English Grade (number value)
Math Grade (number value)

Im not sure if i have to make 2 seperate functions to find the average for each or do it all in one function. Right now the output is 16 for the class average for what i think is the English grade (first grade in file).

Here is my code for the average function:

int getAvg1 (float avg)
    int i = 0;
    float sum = 0;
    int num;
    StudentGrade st[MAX_STDS];

    while (i < MAX_STDS)
       sum += sum + st[i].eng101;


     avg = sum / i;

     return (avg);

This is the main:

int main()

    StudentGrade studList[MAX_STDS];
    int std_num;
    float avgEng;
    float avgHist;

    read_data(studList, std_num);
    print_results(studList, std_num);

    cout << "Class Average: " << getAvg1(avgEng) <<  endl;

    return 0;


Just one function is fine, now just call the function again and change avgEng to avgHist .

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