Need help accessing variables of a member array. I need to calculate the gpa of
ID: 3937070 • Letter: N
Question
Need help accessing variables of a member array. I need to calculate the gpa of a set number of grades. I have already read the elements to the array "courses" using function: void Student::readCourseArray(), (I think correctly) but can't figure out how to get access to the "letterGrade" elements in order to calculate gpa. Any help is greatly appreciated.
Insturctions for the gpa function:
Define the function computeGPA()
Should not return a value
Should not print anything
Go through the array and compute the student’s GPA. Here’s how to calculate the GPA:Calculate the points for each course by multiplying the credit hour for that course by the point grade for the course.
A letter grade can be converted to point grade. A point grade is the numerical value for a letter grade. A is 4, B is 3, C is 2, D is 1, F is 0.
GPA is (total of all points)/(total of all credit hours)
For example, suppose a student had these grades:
A in a 3-hour course
B in a 3-hour course
A in a 2-hour course
The GPA for this student would be calculated like this:
((A * 3) + (B * 3) + (A * 2) ) / (3 + 3 + 2) =
convert the letter grades to point grades:
((4 * 3) + (3 * 3) + (4 * 2) ) / (3 + 3 + 2) =
and do math:
(12 + 9 + 8) / (3 + 3 + 2) = 29 / 8 = 3.625 GPA
What I have so far:
#include
#include
using namespace std;
class Course
{
public:
// Public read functions
void readCourseNum(int n) {courseNumber = n;}
void readCreditHours(double c) { creditHours = c; }
void readCourseName(string n) { courseName = n; }
void readLetterGrade(char g) { letterGrade = g; }
private:
int courseNumber;
double creditHours;
string courseName;
char letterGrade;
};
class Student
{
private:
string firstName, lastName, A_Number;
int numCourses;
double gpa;
Course *courses;
public:
Student();
~Student();
double totalGradePoints();
int getNumCourses() { return numCourses; };
void computeGPA();
void readStudent();
void readCourseArray();
void setFirstName(string n) { firstName = n; }
void setLastName(string l) { lastName = l; }
void setA_Number(string a) { A_Number = a; }
void setNumCourses(int num) { numCourses = num; }
};
Student::Student()
{
firstName = " ";
lastName = " ";
A_Number = " ";
numCourses = 0;
gpa = 0.0;
courses = NULL;
}
Student::~Student()
{
delete [] courses;
}
void Student::computeGPA()
{
}
void Student::readStudent()
{
cout << "Enter student A-number: ";
cin >> A_Number;
setA_Number(A_Number);
cout << "Enter student first name: ";
cin >> firstName;
setFirstName(firstName);
cout << "Enter student last name: ";
cin >> lastName;
setLastName(lastName);
cout << "Enter student number of courses: ";
cin >> numCourses;
setNumCourses(numCourses);
}
void Student::readCourseArray()
{ // Dynamically allocated array for course information
courses = new Course[numCourses];
int num;
double cHours;
string cName;
char grade;
for (int i = 0; i < numCourses; i++)
{
cout << "Enter class " << i + 1 << " number: ";
cin >> num;
courses[i].readCourseNum(num); // call to public read function
cout << "Enter class " << i + 1 << " name: ";
cin >> cName;
courses[i].readCourseName(cName);
cout << "Enter class " << i + 1 << " hours: ";
cin >> cHours;
courses[i].readCreditHours(cHours);
cout << "Enter class " << i + 1 << " grade: ";
cin >> grade;
courses[i].readLetterGrade(grade);
}
}
int main()
{
Student stu;
double gradePoints;
stu.readStudent();
stu.readCourseArray();
return 0;
}
double Student::totalGradePoints()
{
int num = getNumCourses();
for (int i = 0; i < num; i++)
{
if (courses[i].letterGrade == 'A')
}
return 0.0;
}
Explanation / Answer
// C++ code
// you cannot access memeber of other class until derived from other class or declared public
#include <fstream> // file processing
#include <iostream> // cin and cout
#include <cctype> // toupper
#include <iomanip> // setw
#include <cstring> // cstring functions strlen, strcmp, strcpy stored in string.h
#include <string.h> // string class
#define stricmp strcasecmp
#define strnicmp strncasecmp
using namespace std;
class Course
{
public:
// Public read functions
void readCourseNum(int n) {courseNumber = n;}
void readCreditHours(double c) { creditHours = c; }
void readCourseName(string n) { courseName = n; }
void readLetterGrade(char g) { letterGrade = g; }
public:
int courseNumber;
double creditHours;
string courseName;
char letterGrade;
};
class Student : public Course
{
private:
string firstName, lastName, A_Number;
int numCourses;
double gpa;
Course *courses;
public:
Student();
~Student();
double totalGradePoints();
int getNumCourses() { return numCourses; };
double computeGPA();
void readStudent();
void readCourseArray();
void setFirstName(string n) { firstName = n; }
void setLastName(string l) { lastName = l; }
void setA_Number(string a) { A_Number = a; }
void setNumCourses(int num) { numCourses = num; }
};
Student::Student()
{
firstName = " ";
lastName = " ";
A_Number = " ";
numCourses = 0;
gpa = 0.0;
courses = NULL;
}
Student::~Student()
{
delete [] courses;
}
double Student::computeGPA()
{
int totalhours = 0;
int num = getNumCourses();
for (int i = 0; i < num; i++)
{
totalhours = totalhours + courses[i].creditHours;
}
gpa = gpa/totalhours;
}
void Student::readStudent()
{
cout << "Enter student A-number: ";
cin >> A_Number;
setA_Number(A_Number);
cout << "Enter student first name: ";
cin >> firstName;
setFirstName(firstName);
cout << "Enter student last name: ";
cin >> lastName;
setLastName(lastName);
cout << "Enter student number of courses: ";
cin >> numCourses;
setNumCourses(numCourses);
}
void Student::readCourseArray()
{ // Dynamically allocated array for course information
courses = new Course[numCourses];
int num;
double cHours;
string cName;
char grade;
for (int i = 0; i < numCourses; i++)
{
cout << "Enter class " << i + 1 << " number: ";
cin >> num;
courses[i].readCourseNum(num); // call to public read function
cout << "Enter class " << i + 1 << " name: ";
cin >> cName;
courses[i].readCourseName(cName);
cout << "Enter class " << i + 1 << " hours: ";
cin >> cHours;
courses[i].readCreditHours(cHours);
cout << "Enter class " << i + 1 << " grade: ";
cin >> grade;
courses[i].readLetterGrade(grade);
}
}
double Student::totalGradePoints()
{
gpa = 0;
int num = getNumCourses();
for (int i = 0; i < num; i++)
{
if (courses[i].letterGrade == 'A')
gpa = gpa + 4*courses[i].creditHours;
else if (courses[i].letterGrade == 'B')
gpa = gpa + 3*courses[i].creditHours;
else if (courses[i].letterGrade == 'C')
gpa = gpa + 2*courses[i].creditHours;
else if (courses[i].letterGrade == 'D')
gpa = gpa + 1*courses[i].creditHours;
else if (courses[i].letterGrade == 'F')
gpa = gpa + 0*courses[i].creditHours;
}
return gpa;
}
int main()
{
Student stu;
double gradePoints;
stu.readStudent();
stu.readCourseArray();
double gpa = stu.totalGradePoints();
gpa = stu.computeGPA();
cout << "GPA: " << gpa << endl;
return 0;
}
/*
output:
Enter student A-number: 32
Enter student first name: ayush
Enter student last name: verma
Enter student number of courses: 3
Enter class 1 number: 11
Enter class 1 name: akash
Enter class 1 hours: 34
Enter class 1 grade: A
Enter class 2 number: 12
Enter class 2 name: john
Enter class 2 hours: 12
Enter class 2 grade: B
Enter class 3 number: 13
Enter class 3 name: eoin
Enter class 3 hours: 23
Enter class 3 grade: C
GPA: 3.15942
*/
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.