C++ Programming Project #3 Specifications Points Possible: 10 Modify C++ Program
ID: 3688821 • Letter: C
Question
C++ Programming Project #3
Specifications
Points Possible: 10
Modify C++ Programming Project #2 to
include arrays to hold input data
display the revised Sample Output to include input data
include following function requirements:
function prototypes
a main() function that calls all of the other functions
a function to accept and validate input data
a function to display input data
a function to calculate and display semester GPA values
a function to calculate and display cumulative GPA values
at least one function uses pass-by-value
at least one function that uses pass-by-reference
SAMPLE INPUT
Prompt the user to enter data from table below.
Semester
Course Title
Course Type
Cr Hrs
Grade
2
German 2
Regular
3
C
2
AP Math 2
AP
3
B-
2
Biology Honors
Honors
3
A-
2
English Composition
Regular
3
C
2
Chemistry 2 Honors
Honors
3
A+
2
AP World History
AP
3
B+
Semester
Course Title
Course Type
Cr Hrs
Grade
1
German 1
Regular
3
B-
1
AP Math 1
AP
3
A
1
Chemistry 1 Honors
Honors
3
B+
1
Art
Regular
2
A
1
English Literature
Regular
3
C+
1
AP US History
AP
3
A-
A student can take a minimum of one course and a maximum of seven courses during a semester.
Use the table below to verify the accuracy of the data entered by the user. When the user enters invalid data, display an appropriate error message and prompt the user to re-enter the value. Continue to prompt the user until user enters a valid value for the field.
Field Name
Data Type
Valid Values
Semester
char
1 or 2
Course Type
string
Regular, AP, or Honors
Credit Hrs
integer
1, 2, 3, or 4
Letter Grade
string
A+, A, A-, B+, B, B-, etc.
PROCESSING
Calculate the following GPA information for a single student:
Semester 2 standard (unweighted) GPA
Semester 2 weighted GPA
Semester 1 standard (unweighted) GPA
Semester 1 weighted GPA
Cumulative standard (unweighted) GPA
Cumulative unweighted GPA
To calculate standard G.P.A., total the credit hours (Cr Hrs), compute the grade points for each course and then total the grade points. Divide the total grade points earned by the total credit hours. Use the chart below to convert a letter grade to a standard GPA on a 4.0 scale:
Letter Grade
Percent Grade
4.0 Scale
A+
97-100
4.0
A
93-96
4.0
A-
90-92
3.7
B+
87-89
3.3
B
83-86
3.0
B-
80-82
2.7
C+
77-79
2.3
C
73-76
2.0
C-
70-72
1.7
D+
67-69
1.3
D
65-66
1.0
E/F
Below 65
0.0
Source: College Board, How to Convert Your GPA to a 4.0 Scale, Retrieved from http://www.collegeboard.com/html/academicTracker-howtoconvert.html
For purposes of this assignment, to calculate a weighted GPA, for honors and AP courses, add .50 to the 4.0 scale points. For example if an A grade is earned in an Honors or AP course, then the A grade is worth 4.5 points, not 4.0 points. An unweighted or standard GPA uses the 4.0 scale; it does not assign any extra points for Honors or AP courses.
To calculate cumulative G.P.A., for all semesters total the credit hours (Cr Hrs) and then total the grade points. Divide the total grade points earned by the total credit hours.
SAMPLE OUTPUT
Display the following course and GPA information for a single student:
SEMESTER 2
Course Title Credit Hrs Grade
German 2 3 C
AP Math 2 3 B-
Biology Honors 3 A-
English Composition 3 C
Chemistry 2 Honors 3 A+
AP World History 3 B+
Semester 2: Standard GPA = 2.950 Weighted GPA = 3.283
SEMESTER 1
Course Title Credit Hrs Grade
German 1 3 B-
AP Math 1 3 A
Chemistry 1 Honors 3 B+
Art 2 A
English Literature 3 C+
AP US History 3 A-
Semester 1: Standard GPA = 3.294 Weighted GPA = 3.559
CUMULATIVE GPA
Standard GPA = 3.117 Weighted GPA = 3.417
SPECIAL INSTRUCTIONS
Attach and submit you program as a single .cpp file.
Do not use any global variables.
Do not use any Classes or objects.
MY PROJECT2:
#include <iostream>
#include <string>
using namespace std;
int main() {
int semesterTwoCreditHours = 0;
double semesterTwoGradePoint = 0.0;
double semesterTwoWeightedGradePoint = 0.0;
int semesterOneCreditHours = 0;
double semesterOneGradePoint = 0.0;
double semesterOneWeightedGradePoint = 0.0;
for (int i = 2; i > 0;--i) {
cout << "Enter semester " << i << " data for 6 subjects: " << endl;
for (int j = 1; j <= 6; ++j) {
string courseTitle = "N/A";
string courseType = "N/A";
int creditHours = -1;
string grade = "N/A";
while (courseTitle == "N/A") {
cout << "Enter course title: ";
getline(cin, courseTitle);
if (courseTitle == "N/A") {
cout << "Error! Course title can not be empty. Please re-enter. ";
}
}
while (courseType != "Regular" && courseType != "AP" && courseType != "Honors") {
cout << "Enter course type: ";
cin >> courseType;
if (courseType != "Regular" && courseType != "AP" && courseType != "Honors") {
cout << "Error! Course title must be one of Regular, AP or Honors. ";
}
}
while (creditHours <= 0 || creditHours > 4) {
cout << "Enter credit hours: ";
cin >> creditHours;
if (creditHours <= 0 || creditHours > 4) {
cout << "Error! Credit hours should be an integer from 1 to 4. ";
}
}
while (grade != "A+" && grade != "A" && grade != "A-"
&& grade != "B+" && grade != "B" && grade != "B-"
&& grade != "C+" && grade != "C" && grade != "C-"
&& grade != "D+" && grade != "D"
&& grade != "E" && grade != "F") {
cout << "Enter grade: ";
cin >> grade;
if (grade != "A+" && grade != "A" && grade != "A-"
&& grade != "B+" && grade != "B" && grade != "B-"
&& grade != "C+" && grade != "C" && grade != "C-"
&& grade != "D+" && grade != "D"
&& grade != "E" && grade != "F") {
cout << "Error! Please enter correct grade input. ";
}
}
double gradePoints;
if (grade == "A+") gradePoints = 4.0;
else if (grade == "A") gradePoints = 4.0;
else if (grade == "A-") gradePoints = 3.7;
else if (grade == "B+") gradePoints = 3.3;
else if (grade == "B") gradePoints = 3.0;
else if (grade == "B-") gradePoints = 2.7;
else if (grade == "C+") gradePoints = 2.3;
else if (grade == "C") gradePoints = 2.0;
else if (grade == "C-") gradePoints = 1.7;
else if (grade == "D+") gradePoints = 1.3;
else if (grade == "D") gradePoints = 1.0;
else if (grade == "E" || grade == "F") gradePoints = 0.0;
if (i == 2) {
semesterTwoCreditHours += creditHours;
semesterTwoGradePoint += creditHours * gradePoints;
if (courseType == "AP" || courseType == "Honors") {
gradePoints += 0.5;
}
semesterTwoWeightedGradePoint += creditHours * gradePoints;
}
else {
semesterOneCreditHours += creditHours;
semesterOneGradePoint += creditHours * gradePoints;
if (courseType == "AP" || courseType == "Honors") {
gradePoints += 0.5;
}
semesterOneWeightedGradePoint += creditHours * gradePoints;
}
string temp;
getline(cin, temp);
}
}
printf("Semester 2: Standard GPA = %.3lf Weighted GPA = %.3lf ",
semesterTwoGradePoint / semesterTwoCreditHours, semesterTwoWeightedGradePoint / semesterTwoCreditHours);
printf("Semester 1: Standard GPA = %.3lf Weighted GPA = %.3lf ",
semesterOneGradePoint / semesterOneCreditHours, semesterOneWeightedGradePoint / semesterOneCreditHours);
printf("CUMULATIVE GPA ");
printf("Standart GPA = %.3lf Weighted GPA = %.3lf ",
(semesterTwoGradePoint + semesterOneGradePoint) / (semesterOneCreditHours + semesterTwoCreditHours),
(semesterOneWeightedGradePoint + semesterTwoWeightedGradePoint) / (semesterOneCreditHours + semesterTwoCreditHours));
return 0;
}
Semester
Course Title
Course Type
Cr Hrs
Grade
2
German 2
Regular
3
C
2
AP Math 2
AP
3
B-
2
Biology Honors
Honors
3
A-
2
English Composition
Regular
3
C
2
Chemistry 2 Honors
Honors
3
A+
2
AP World History
AP
3
B+
Semester
Course Title
Course Type
Cr Hrs
Grade
1
German 1
Regular
3
B-
1
AP Math 1
AP
3
A
1
Chemistry 1 Honors
Honors
3
B+
1
Art
Regular
2
A
1
English Literature
Regular
3
C+
1
AP US History
AP
3
A-
Explanation / Answer
Try this and let me know:
#include <iostream>
#include <string>
using namespace std;
void readData(string semtitle[6],string semtype[6],int semhrs[6],string semgrade[6])
{
for (int i = 0; i < 6; i++) {
semtitle[i]= "N/A";
semtype[i] = "N/A";
semhrs[i] = -1;
semgrade[i] = "N/A";
while (semtitle[i] == "N/A") {
cout << "Enter course title: ";
//getline(cin, semtitle[i]);
cin>>semtitle[i];
if (semtitle[i] == "N/A") {
cout << "Error! Course title can not be empty. Please re-enter. ";
}
}
while (semtype[i] != "Regular" && semtype[i] != "AP" && semtype[i] != "Honors") {
cout << "Enter course type: ";
cin >> semtype[i];
if (semtype[i] != "Regular" && semtype[i] != "AP" && semtype[i] != "Honors") {
cout << "Error! Course title must be one of Regular, AP or Honors. ";
}
}
while (semhrs[i] <= 0 || semhrs[i] > 4) {
cout << "Enter credit hours: ";
cin >> semhrs[i];
if (semhrs[i] <= 0 || semhrs[i] > 4) {
cout << "Error! Credit hours should be an integer from 1 to 4. ";
}
}
while (semgrade[i] != "A+" && semgrade[i] != "A" && semgrade[i] != "A-"
&& semgrade[i] != "B+" && semgrade[i] != "B" && semgrade[i] != "B-"
&& semgrade[i] != "C+" && semgrade[i] != "C" && semgrade[i] != "C-"
&& semgrade[i] != "D+" && semgrade[i] != "D"
&& semgrade[i] != "E" && semgrade[i] != "F") {
cout << "Enter grade: ";
cin >>semgrade[i];
if (semgrade[i] != "A+" && semgrade[i] != "A" && semgrade[i] != "A-"
&& semgrade[i] != "B+" && semgrade[i] != "B" && semgrade[i] != "B-"
&& semgrade[i] != "C+" && semgrade[i] != "C" && semgrade[i] != "C-"
&& semgrade[i] != "D+" && semgrade[i] != "D"
&& semgrade[i] != "E" && semgrade[i] != "F") {
cout << "Error! Please enter correct grade input. ";
}
}
}
}
void calSemesterGPA(string semtitle[6],string semtype[6],int semhrs[6],string semgrade[6])
{
int semesterOneCreditHours = 0;
double semesterOneGradePoint = 0.0;
double semesterOneWeightedGradePoint = 0.0;
for(int i=0;i<6;i++)
{
double gradePoints;
if (semgrade[i] == "A+") gradePoints = 4.0;
else if (semgrade[i] == "A") gradePoints = 4.0;
else if (semgrade[i]== "A-") gradePoints = 3.7;
else if (semgrade[i] == "B+") gradePoints = 3.3;
else if (semgrade[i] == "B") gradePoints = 3.0;
else if (semgrade[i] == "B-") gradePoints = 2.7;
else if (semgrade[i] == "C+") gradePoints = 2.3;
else if (semgrade[i] == "C") gradePoints = 2.0;
else if (semgrade[i] == "C-") gradePoints = 1.7;
else if (semgrade[i] == "D+") gradePoints = 1.3;
else if (semgrade[i] == "D") gradePoints = 1.0;
else if (semgrade[i] == "E" || semgrade[i] == "F") gradePoints = 0.0;
semesterOneCreditHours += semhrs[i];
semesterOneGradePoint += semhrs[i] * gradePoints;
if (semtype[i] == "AP" || semtype[i] == "Honors") {
gradePoints += 0.5;
}
semesterOneWeightedGradePoint += semhrs[i] * gradePoints;
}
printf(" For this semester : Standard GPA = %.3lf Weighted GPA = %.3lf ",
semesterOneGradePoint / semesterOneCreditHours, semesterOneWeightedGradePoint / semesterOneCreditHours);
}
void calCumulativeGPA(string sem1title[6],string sem1type[6],int sem1hrs[6],string sem1grade[6],string sem2title[6],string sem2type[6],int sem2hrs[6],string sem2grade[6])
{
int semesterTwoCreditHours = 0;
double semesterTwoGradePoint = 0.0;
double semesterTwoWeightedGradePoint = 0.0;
int semesterOneCreditHours = 0;
double semesterOneGradePoint = 0.0;
double semesterOneWeightedGradePoint = 0.0;
for(int i=0;i<6;i++)
{
double gradePoints;
if (sem1grade[i] == "A+") gradePoints = 4.0;
else if (sem1grade[i] == "A") gradePoints = 4.0;
else if (sem1grade[i]== "A-") gradePoints = 3.7;
else if (sem1grade[i] == "B+") gradePoints = 3.3;
else if (sem1grade[i] == "B") gradePoints = 3.0;
else if (sem1grade[i] == "B-") gradePoints = 2.7;
else if (sem1grade[i] == "C+") gradePoints = 2.3;
else if (sem1grade[i] == "C") gradePoints = 2.0;
else if (sem1grade[i] == "C-") gradePoints = 1.7;
else if (sem1grade[i] == "D+") gradePoints = 1.3;
else if (sem1grade[i] == "D") gradePoints = 1.0;
else if (sem1grade[i] == "E" || sem1grade[i] == "F") gradePoints = 0.0;
semesterOneCreditHours += sem1hrs[i];
semesterOneGradePoint += sem1hrs[i] * gradePoints;
if (sem1type[i] == "AP" || sem1type[i] == "Honors") {
gradePoints += 0.5;
}
semesterOneWeightedGradePoint += sem1hrs[i] * gradePoints;
}
for(int i=0;i<6;i++)
{
double gradePoints;
if (sem2grade[i] == "A+") gradePoints = 4.0;
else if (sem2grade[i] == "A") gradePoints = 4.0;
else if (sem2grade[i]== "A-") gradePoints = 3.7;
else if (sem2grade[i] == "B+") gradePoints = 3.3;
else if (sem2grade[i] == "B") gradePoints = 3.0;
else if (sem2grade[i] == "B-") gradePoints = 2.7;
else if (sem2grade[i] == "C+") gradePoints = 2.3;
else if (sem2grade[i] == "C") gradePoints = 2.0;
else if (sem2grade[i] == "C-") gradePoints = 1.7;
else if (sem2grade[i] == "D+") gradePoints = 1.3;
else if (sem2grade[i] == "D") gradePoints = 1.0;
else if (sem2grade[i] == "E" || sem2grade[i] == "F") gradePoints = 0.0;
semesterOneCreditHours += sem2hrs[i];
semesterOneGradePoint += sem2hrs[i] * gradePoints;
if (sem2type[i] == "AP" || sem2type[i] == "Honors") {
gradePoints += 0.5;
}
semesterOneWeightedGradePoint += sem2hrs[i] * gradePoints;
}
printf("CUMULATIVE GPA ");
printf("Standart GPA = %.3lf Weighted GPA = %.3lf ",
(semesterTwoGradePoint + semesterOneGradePoint) / (semesterOneCreditHours + semesterTwoCreditHours),
(semesterOneWeightedGradePoint + semesterTwoWeightedGradePoint) / (semesterOneCreditHours + semesterTwoCreditHours));
}
void print(string semtitle[6],int semhrs[6],string semgrade[6])
{
for(int i=0;i<6;i++)
{
cout<<semtitle[i]<<" "<<semhrs[i]<<" "<<semgrade[i]<<endl;
}
}
int main() {
string sem1title[6],sem2title[6],sem1type[6],sem2type[6];
int sem1hrs[6],sem2hrs[6];
string sem1grade[6],sem2grade[2];
cout<<"Enter 6 subjects for semester 1 ";
readData(sem1title,sem1type,sem1hrs,sem1grade);
cout<<"Enter 6 subjects for semester 2 ";
readData(sem2title,sem2type,sem2hrs,sem2grade);
//print semester 1 details
cout<<"Semester 1: ";
cout<<"CourseTitle Hours Grade ";
print(sem1title,sem1hrs,sem1grade);
calSemesterGPA(sem1title,sem1type,sem1hrs,sem1grade);
//print semester 2 details
cout<<"Semester 2: ";
cout<<"CourseTitle Hours Grade ";
print(sem2title,sem2hrs,sem2grade);
calSemesterGPA(sem2title,sem2type,sem2hrs,sem2grade);
calCumulativeGPA(sem1title,sem1type,sem1hrs,sem1grade,sem2title,sem2type,sem2hrs,sem2grade);
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.