I'm having an issue with a loop to fill in spaces of a string so it can display a table properly. I dont know why its not working but it should; Ive tried everything with this thing and no go. Basicall I need the string studentName to loop, and the names to all be equal when I do a setw. Any help is appreciated.
for (int x = 1; x <= 6 - nameSpaces; x++)
oStream << 'x';
Code:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
void CalculateAverage(int, int, int, int, int, int &);
char CalculateGrade(int);
int main()
{
int average = 0;
int classAverage = 0;
int grade1, grade2, grade3, grade4, grade5;
int class1 = 0;
int class2 = 0;
int class3 = 0;
int class4 = 0;
int class5 = 0;
int students = 0;
string studentName;
int nameSpaces = studentName.length();
ifstream iStream;
ofstream oStream;
cout << "Working..."<<endl;
iStream.open("c:iStream.txt");
oStream.open("c:averages.txt");
oStream << "Name Test1 Test2 Test3 Test4 Test5 Avg Grade" << endl;
oStream << "----- ----- ----- ----- ----- ----- --- -----" << endl;
iStream>>studentName;
while (iStream)
{
iStream>>grade1;
class1 += grade1;
iStream>>grade2;
class2 += grade2;
iStream>>grade3;
class3 += grade3;
iStream>>grade4;
class4 += grade4;
iStream>>grade5;
class5 += grade5;
students++;
CalculateAverage(grade1, grade2, grade3, grade4, grade5, average);
classAverage += average;
oStream<<studentName;
for (int x = 1; x <= 6 - nameSpaces; x++)
oStream << 'x'; //<-----Problem here
oStream <<setw(8)<<grade1<<setw(8)<<grade2<<setw(8)<<grade3<<setw(8)<<grade4<<setw(8)<<grade5<<setw(8);
oStream <<average <<setw(8)<<CalculateGrade(average)<<endl;
iStream.ignore(100, '\n');
iStream>>studentName;
}
class1 = class1 / students;
class2 = class2 / students;
oStream<<"---------------------------"<<endl;
oStream<<setw(2)<<"Class"<<setw(7)<<class1<<setw(8)<<class2<<setw(8)
<<class3<<setw(8)<<class4<<setw(8)<<class5<<setw(8)<<classAverage
<<setw(8)<<CalculateGrade(classAverage)<<endl;
iStream.close();
class3 = class3 / students;
class4 = class4 / students;
class5 = class5 / students;
classAverage = classAverage / students;
oStream.close();
cout<<"File ready."<<endl;
return 0;
}
void CalculateAverage(int grade1, int grade2, int grade3, int grade4,
int grade5, int &average)
{
average = (grade1 + grade2 + grade3 + grade4 + grade5) / 5;
return;
}
char CalculateGrade(int score)
{
if (score >= 90)
return 'A';
else if (score >= 80)
return 'B';
else if (score >= 70)
return 'C';
else if (score >= 60)
return 'D';
else
return 'F';
}