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; }