I need to be able to save my additional data to my .dat file. The additional data is not part of the vector though. It is data I made after the vector. I have to save the finalGrade and letter grade to my file.Also, how can I save my letter grade to my file when I didn't actually name it that?
Code:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <iomanip>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
class Grade
{
private:
string name;
double examOne, examTwo, homework, finalExam, finalGrade;
public:
Grade(){setGrade("Tom", 94, 92, 87 ,85);};
Grade(string nm, double exOne, double exTwo, double hw, double final){setGrade(nm, exOne, exTwo, hw, final);};
void setGrade(string nm, double exOne, double exTwo, double hw, double final){name=nm; examOne=exOne; examTwo=exTwo; homework=hw; finalExam=final;};
string getName(){return name;};
double getExamOne(){return examOne;};
double getExamTwo(){return examTwo;};
double getHomework(){return homework;};
double getFinalExam(){return finalExam;};
double getFinalGrade(){return finalGrade;};
};
int _tmain(int argc, _TCHAR* argv[])
{
const int Grades = 2;
string filename = "grades.dat";
string name;
ofstream outFile;
int i;
double finalGrade, examOne, examTwo, homework, finalExam;;
Grade g;
vector<Grade> gTable;
outFile.open(filename.c_str());
for(i=0; i<Grades; i++)
{
cout <<"\nEnter students name, 1st exam grade, 2nd exam grade, homework average,"
<< "and final exam grade (type done to exit): \n";
cin >>name>>examOne>>examTwo>>homework>>finalExam;
if(name=="done")
break;
g=Grade(name, examOne, examTwo, homework, finalExam);
gTable.push_back(g);
}
cout << fixed << setprecision(2) << endl;
cout << "Student Exam 1 Exam 2 Homework Final Exam Final Letter"<<endl;
cout << "Name Grade Grade Average Grade Grade Grade"<<endl;
cout << "------- ------ ------ -------- ---------- ----- -----"<<endl;
for ( i = 0; i < Grades; i++ ) {
double finalGrade =
0.20 * gTable[i].getExamOne()
+ 0.20 * gTable[i].getExamTwo()
+ 0.35 * gTable[i].getHomework()
+ 0.25 * gTable[i].getFinalExam();
cout<< setw(7) << gTable[i].getName()
<< setw(10) << gTable[i].getExamOne()
<< setw(11) << gTable[i].getExamTwo()
<< setw(13) << gTable[i].getHomework()
<< setw(15) << gTable[i].getFinalExam()
<< setw(10) << finalGrade;
if ( finalGrade > 90 )
cout<< setw( 11 ) <<"A";
else if ( finalGrade > 80 )
cout<< setw( 11 ) <<"B";
else if ( finalGrade > 70 )
cout<< setw( 11 ) <<"C";
else if ( finalGrade > 59 )
cout<< setw( 11 ) <<"D";
else
cout<< setw( 11 ) <<"F";
outFile<<gTable[i].getName()<<" "
<<gTable[i].getExamOne()<<" "
<<gTable[i].getExamTwo()<<" "
<<gTable[i].getHomework()<<" "
<<gTable[i].getFinalExam()<<" "
<<gTable[i].getFinalGrade()<<endl;
cout<<'\n'<<endl;
}
outFile.close();
cout << "The file " << filename
<< " has been successfully written." << endl;
cin.ignore();cin.ignore();
return 0;
}
Comment