Need Help With Basic Program (computing grades)
Hello everyone,
I am a novice programmer who created this program just to get some beginner's practice using vectors. When I compile it, I get no errors, but the homework grade is returned as 0 and after inputting the quiz grades I get a segmentation fault (core dumped). Thanks in advance for any help with syntax and/or basic programming.
Code:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
int main ()
{
string homework_grades_filename;
cout << "\nPlease enter the name of the student's homework grades file (include .txt): ";
cin >> homework_grades_filename;
fstream file;
file.open( homework_grades_filename.c_str() );
vector<int> homework_grades;
while(file.eof() == false)
{
string homework_grade;
getline(file, homework_grade);
int homework_gradeNum = atoi(homework_grade.c_str());
homework_grades.push_back(homework_gradeNum);
}
file.close();
int total_homework_grades = 0;
for(int i=0; i < 10; i++)
{
total_homework_grades += homework_grades[i];
}
float final_homework_grade = (total_homework_grades / 100) * 100 * 0.30;
cout << final_homework_grade << endl;
string quiz_grades_filename;
cout << "\nPlease enter the name of the student's quiz grades file (include .txt): ";
cin >> quiz_grades_filename;
file.open( quiz_grades_filename.c_str() );
vector<int> quiz_grades;
while(file.eof() == false)
{
string quiz_grade;
getline(file, quiz_grade);
int quiz_gradeNum = atoi(quiz_grade.c_str());
quiz_grades.push_back(quiz_gradeNum);
}
file.close();
int total_quiz_grades = 0;
for(int i=0; i < 5; i++)
{
total_quiz_grades += quiz_grades[i];
}
float final_quiz_grade = (total_quiz_grades / 250) * 100 * 0.30;
cout << final_quiz_grade << endl;
string test_grades_filename;
cout << "\nPlease enter the name of the student's test grades file (include .txt): ";
cin >> test_grades_filename;
file.open( test_grades_filename.c_str() );
vector<int> test_grades;
while(file.eof() == false)
{
string test_grade;
getline(file, test_grade);
int test_gradeNum = atoi(test_grade.c_str());
test_grades.push_back(test_gradeNum);
}
file.close();
int total_test_grades = 0;
for(int i=0; i < 3; i++)
{
total_test_grades += test_grades[i];
}
float final_test_grade = (total_test_grades / 300) * 100 * 0.40;
cout << final_test_grade << endl;
float final_grade = (final_homework_grade + final_quiz_grade + final_test_grade);
string letter_grade;
char A;
char B;
char C;
char D;
char F;
if (95 < final_grade < 100)
letter_grade = "A+";
else if (90 < final_grade < 94)
letter_grade = A;
else if (85 < final_grade < 89)
letter_grade = "B+";
else if (80 < final_grade < 84)
letter_grade = B;
else if (75 < final_grade < 79)
letter_grade = "C+";
else if (70 < final_grade < 74)
letter_grade = C;
else if (65 < final_grade < 69)
letter_grade = "D+";
else if (60 < final_grade < 64)
letter_grade = D;
else
letter_grade = F;
cout << "\nStudent's final grade is: " << final_grade << letter_grade << endl;
return 0;
}