I am getting this error when I run the program. It compiles successfully but gives me a few warnings about the uninitialized variables which, I thought are initialized. I get the error “Debug error! Run-Time Check Failure #3- The variable ‘sumMaleGPA’ is being used without being initialized.”
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
void openFiles(ifstream& inFile, ofstream& outFile)
{
inFile.open("finalin.dat");
outFile.open("finalout.dat");
outFile << fixed << showpoint << setprecision(2);
inFile >> fixed >> showpoint >> setprecision(2);
if (!inFile||!outFile)
{
cout << "Problem opening file.";
}
}
void initialize(int countFemale,int countMale,float sumFemaleGPA,float sumMaleGPA)
{
countFemale=0;
countMale=0;
sumFemaleGPA=0;
sumMaleGPA=0;
}
void sumGrades(ifstream& inFile, float sumFemaleGPA, float sumMaleGPA,int m,int f)
{
sumFemaleGPA=0;
sumMaleGPA=0;
if (!inFile)
{
inFile.open("finalin.dat");
}
char sex;
float grade;
while(!inFile.eof())
{
inFile >> sex >> grade;
switch (sex)
{
case 'f': (sumFemaleGPA= sumFemaleGPA + grade);
f++;
break;
case 'm': (sumMaleGPA= sumMaleGPA + grade);
m++;
break;
}
}
}
void averageGPA(float avgfGPA, float avgmGPA, int m, int f, float sumFemaleGPA, float sumMaleGPA)
{
avgmGPA=0;
avgfGPA=0;
avgfGPA=sumFemaleGPA/f;
avgmGPA=sumMaleGPA/m;
}
void printResults(float avgfGPA, float avgmGPA, ofstream& outFile)
{
cout <<"The average GPA of the female students is: "<< avgfGPA << endl;
cout <<"The average GPA of the male students is: "<< avgmGPA;
outFile << "The average GPA of the female students is: "<< avgfGPA << endl;
outFile <<"The average GPA of the male students is: "<< avgmGPA;
}
int main()
{
int countFemale;
int countMale;
float sumFemaleGPA;
float sumMaleGPA;
float avgfGPA;
float avgmGPA;
ifstream inFile;
ofstream outFile;
openFiles(inFile,outFile);
initialize(countFemale,countMale,sumFemaleGPA,sumMaleGPA);
sumGrades(inFile,sumFemaleGPA,sumMaleGPA,countMale,countFemale);
averageGPA(avgfGPA,avgmGPA,countMale,countFemale,sumFemaleGPA,sumMaleGPA);
printResults(avgfGPA,avgmGPA, outFile);
}
Not sure where the error is happening so I posted the entire file.
Your
initializeandaverageGPAfunctions are not correct.Any parameter you want to modify inside the function should be passed by reference:
As it is, the
initialize()function doesn’t actually initialize the variables – hence why the you get the debug error when you first try to use them.Right now, you are passing by value. The parameters are copied into the function. The function then modifies the local copies instead of the ones that are passed in.