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

Im wriiting a code for a sentienl controlled while loop that uses g as the endin

ID: 3624850 • Letter: I

Question

Im wriiting a code for a sentienl controlled while loop that uses g as the ending char.

My output is suppost to tell the Females gpa's and males gpa's...the input file is like

f 3.4
m 2.3...
then g

So my code was only putting male gpa=0 and female is 3.4...its only reading the 1st vaule and its not reading any of the males output. we can not use any void features...im stuck.
here is my code


#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>

using namespace std;

int main()
{





int countFemale;
int countMale;
double sumMaleGPA;
double sumFemaleGPA;
double averageMaleGPA;
double averageFemaleGPA;
char x;
const char sentinel= g;

ifstream inFile;
inFile.open("F://gpa.txt");


sumFemaleGPA = 0.0;
sumMaleGPA = 0.0;
averageFemaleGPA = 0.0;
averageMaleGPA = 0.0;
countMale = 0;
countFemale = 0;

char gender;
const char& m = 'm';
const char& f = 'f';

double GPA;

GPA = 0.0;

inFile >> gender >> GPA;

while (inFile);
{


if (gender == 'm')
{
countMale++;
sumMaleGPA = sumMaleGPA + GPA; }

if (gender == 'f')
{
countFemale++;
sumFemaleGPA = sumFemaleGPA + GPA; }
}
if (countMale != 0)

averageMaleGPA = (sumMaleGPA / countMale);

if (countFemale != 0)

averageFemaleGPA = (sumFemaleGPA / countFemale);



cout << " The average male GPA is " << averageMaleGPA << endl;
cout << " The average female GPA is " << averageFemaleGPA<< endl;

inFile.close ();





system("PAUSE");

return 0;

}
any help would be appericated...thanks

Explanation / Answer

// Modified code shown in red colour

// now code perfectly working enjoy.

#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
int main()
{
int countFemale;
int countMale;
double sumMaleGPA;
double sumFemaleGPA;
double averageMaleGPA;
double averageFemaleGPA;
char x;
const char sentinel= 'g';

ifstream inFile;
inFile.open(("F://gpa.txt");


sumFemaleGPA = 0.0;
sumMaleGPA = 0.0;
averageFemaleGPA = 0.0;
averageMaleGPA = 0.0;
countMale = 0;
countFemale = 0;

char gender;
const char& m = 'm';
const char& f = 'f';

double GPA;
GPA = 0.0;
while (!inFile.eof())
{
inFile >> gender >> GPA;
if (gender == 'm')
{
countMale++;
sumMaleGPA = sumMaleGPA + GPA;
}
if (gender == 'f')
{
countFemale++;
sumFemaleGPA = sumFemaleGPA + GPA;
}

if (gender == 'g')      // sentinetal break............
break;

}

if (countMale != 0)

averageMaleGPA = (sumMaleGPA / countMale);

if (countFemale != 0)

averageFemaleGPA = (sumFemaleGPA / countFemale);



cout << " The average male GPA is " << averageMaleGPA << endl;
cout << " The average female GPA is " << averageFemaleGPA<< endl;

inFile.close ();





system("PAUSE");

return 0;

}