Help saving additional data to file?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • gator6688
    New Member
    • Sep 2007
    • 63

    Help saving additional data to file?

    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;
    }
  • sicarie
    Recognized Expert Specialist
    • Nov 2006
    • 4677

    #2
    Originally posted by gator6688
    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?
    I'm a little confused by what you mean "you didn't actually name it that". Can you not use the name you named it as?
    [code=cpp]
    outFile.open(fi lename.c_str()) ;
    [/code]

    You are trying to open the file for reading and writing, am I correct? It looks like you do not specify that in the open() function, using ios::in | ios::out after the filename.

    Comment

    Working...