Note: this was made with Microsoft Visual Studio 6.0
#include <iostream.h>
#include <apstring.cpp>
int classnum;
int counter =1;
struct classav{ //declares classaverage data type
apstring name; //Declares classs name string
apstring grade; //Declares grade string
double percent; //Pwcentage double
double GP;//Grade point for class
double GPweight;//Weighted GP
int isadv;//Determines whether class is AP/IB, honors, or unweighted
};
classav class1,class2,class3, class4, class5, class6, class7, class8;
double findGP( classav x){//grade point function, determines grade point based on percentage
if (x.percent >=97) {
x.GP = 4.33;
}
else if (x.percent <97 && x.percent>=94){
x.GP=4.00;
}
else if (x.percent <93 && x.percent >=90){
x.GP=3.66;
}
else if (x.percent<90 && x.percent>=87){
x.GP = 3.33;
}
else if (x.percent <87 && x.percent>=83){
x.GP=3.00;
}
else if (x.percent <83 && x.percent >=80){
x.GP=2.66;
}
else if (x.percent<80 && x.percent>=77){
x.GP = 2.33;
}
else if (x.percent <77 && x.percent>=73){
x.GP=2.00;
}
else if (x.percent <73 && x.percent >=70){
x.GP=2.66;
}
else if (x.percent<70 && x.percent>=67){
x.GP = 1.33;
}
else if (x.percent <67 && x.percent>=63){
x.GP=1.00;
}
else if (x.percent <63 && x.percent >=60){
x.GP=0.66;
}
else{
x.GP = 0;
}
if (x.isadv == 1){
x.GPweight= x.GP +1;
}
if (x.isadv == 2){
x.GPweight =x.GP +2;
}
else{
x.GPweight =x.GP;
}
return x.GP;
}
double findGPweight(classav x){//determines weighted GPA
if (x.isadv == 1){
x.GPweight= x.GP +1;
}
else if (x.isadv == 2){ ;
x.GPweight =x.GP +2;
}
else{
x.GPweight =x.GP;
}
return x.GPweight;
}
apstring findGrade(classav x){//function, determines letter grade based on percentage
if (x.percent >=97) {
x.grade = "A+";
}
else if (x.percent <97 && x.percent>=94){
x.grade = "A";
}
else if (x.percent <93 && x.percent >=90){
x.grade = "A-";
}
else if (x.percent<90 && x.percent>=87){
x.grade = "B+";
}
else if (x.percent <87 && x.percent>=83){
x.grade = "B";
}
else if (x.percent <83 && x.percent >=80){
x.grade = "B-";
}
else if (x.percent<80 && x.percent>=77){
x.grade = "C+";
}
else if (x.percent <77 && x.percent>=73){
x.grade = "C";
}
else if (x.percent <73 && x.percent >=70){
x.grade = "C-";
}
else if (x.percent<70 && x.percent>=67){
x.grade = "D+";
}
else if (x.percent <67 && x.percent>=63){
x.grade = "D";
}
else if (x.percent <63 && x.percent >=60){
x.grade = "D-";
}
else{
x.grade = "F";
}
return x.grade;
}
int main(){
cout <<"Welcome to the GPA calculator. How many classes (1-8)do you take?" << endl;
cin >> classnum; //Number of classes counted
while (counter <= classnum){ //While loop, runs series of if-statements to retrieve class data
if (counter ==1){
cout << "Please enter the class name" << endl;
getline (cin,class1.name); //retrieves class name, getline used twice due to apstring problem
getline (cin,class1.name);
cout << "Please enter your percent average in that class" << endl;
cin >> class1.percent; //Class perecnt
cout <<" Is the class: \n 2.Advanced Placement/IB \n 1. Honors \n 0: Regular" << endl;
cin >> class1.isadv;//Is the class advanced?
class1.GP =findGP (class1); //Refers to GP function
class1.GPweight =findGPweight (class1);//Refers to weighted GPA function
class1.grade =findGrade (class1); //REfers to find letter grade function
}
if (counter ==2){ //All subsequent if-statements within the loop retrive information for other classes
classav class2;
cout << "Please enter the class name" << endl;
getline (cin,class2.name);
getline (cin,class1.name);
cout << "Please enter your percent average in that class" << endl;
cin >> class2.percent;
cout <<" Is the class: \n 2.Advanced Placement/IB \n 1. Honors \n 0: Regular" << endl;
cin >> class2.isadv;
class2.GP =findGP (class2);
class2.GPweight =findGPweight (class2);
class2.grade =findGrade (class2);
}
if (counter ==3){
classav class3;
cout << "Please enter the class name" << endl;
getline (cin,class3.name);
getline (cin,class1.name);
cout << "Please enter your percent average in that class" << endl;
cin >> class3.percent;
cout <<" Is the class: \n 2.Advanced Placement/IB \n 1. Honors \n 0: Regular" << endl;
cin >> class3.isadv;
class3.GP =findGP (class3);
class3.GPweight =findGPweight (class3);
class3.grade =findGrade (class3);
}
if (counter ==4){
classav class4;
cout << "Please enter the class name" << endl;
getline (cin,class4.name);
getline (cin,class1.name);
cout << "Please enter your percent average in that class" << endl;
cin >> class4.percent;
cout <<" Is the class: \n 2.Advanced Placement/IB \n 1. Honors \n 0: Regular" << endl;
cin >> class4.isadv;
class4.GP =findGP (class4);
class4.GPweight =findGPweight (class4);
class4.grade =findGrade (class4);
}
if (counter ==5){
classav class5;
cout << "Please enter the class name" << endl;
getline (cin,class5.name);
getline (cin,class1.name);
cout << "Please enter your percent average in that class" << endl;
cin >> class5.percent;
cout <<" Is the class: \n 2.Advanced Placement/IB \n 1. Honors \n 0: Regular" << endl;
cin >> class5.isadv;
class5.GP =findGP (class5);
class5.GPweight =findGPweight (class5);
class5.grade =findGrade (class5);
}
if (counter ==6){
classav class6;
cout << "Please enter the class name" << endl;
getline (cin,class6.name);
getline (cin,class1.name);
cout << "Please enter your percent average in that class" << endl;
cin >> class6.percent;
cout <<" Is the class: \n 2.Advanced Placement/IB \n 1. Honors \n 0: Regular" << endl;
cin >> class6.isadv;
class6.GP =findGP (class6);
class6.GPweight =findGPweight (class6);
class6.grade =findGrade (class6);
}
if (counter ==7){
classav class7;
cout << "Please enter the class name" << endl;
getline (cin,class7.name);
getline (cin,class1.name);
cout << "Please enter your percent average in that class" << endl;
cin >> class7.percent;
cout <<" Is the class: \n 2.Advanced Placement/IB \n 1. Honors \n 0: Regular" << endl;
cin >> class7.isadv;
class7.GP =findGP (class7);
class7.GPweight =findGPweight (class7);
class7.grade =findGrade (class7);
}
if (counter ==8){
classav class8;
cout << "Please enter the class name" << endl;
getline (cin,class8.name);
getline (cin,class1.name);
cout << "Please enter your percent average in that class" << endl;
cin >> class8.percent;
cout <<" Is the class: \n 2.Advanced Placement/IB \n 1. Honors \n 0: Regular" << endl;
cin >> class8.isadv;
class8.GP =findGP (class8);
class8.GPweight =findGPweight (class8);
class8.grade =findGrade (class8);
}
counter++; //Increments counter
}
counter =counter-1;//Subtracts one from counter to compensate for final increment at end of while loop; allows if-statements below to function properly
cout<<counter<< endl;
classav Average;
if (counter ==1){ //If class number/counter equals one, declares Average class and performs calculations as done for individual classes above. This is done in the same manner for different numbers of classes below
Average.name = "Average";
Average.percent = class1.percent;
Average.GP = class1.GP;
Average.GPweight = class1.GPweight;
Average.grade = findGrade(Average);
cout << "Class Percent Grade GP(Unweighted) GP(Weighted)" << endl;
cout << class1.name << " " << class1.percent << " " << class1.grade << " " << class1.GP << " " << class1.GPweight <<endl;
cout << Average.name << " " << Average.percent << " " << Average.grade << " " << Average.GP << " " << Average.GPweight <<endl;
}
if (counter ==2){
Average.name = "Average";
Average.percent = (class1.percent+class2.percent)/2;
Average.GP = (class1.GP+class2.GP)/2;
Average.GPweight = (class1.GPweight+class2.GPweight)/2;
Average.grade = findGrade(Average);
cout << "Class Percent Grade GP(Unweighted) GP(Weighted)" << endl;
cout << class1.name << " " << class1.percent << " " << class1.grade << " " << class1.GP << " " << class1.GPweight <<endl;
cout << class2.name << " " << class2.percent << " " << class2.grade << " " << class2.GP << " " << class2.GPweight <<endl;
cout << Average.name << " " << Average.percent << " " << Average.grade << " " << Average.GP << " " << Average.GPweight <<endl;
}
if (counter ==3){
Average.name = "Average";
Average.percent = (class1.percent+class2.percent+class3.percent)/3;
Average.GP = (class1.GP+class2.GP+class3.GP)/3;
Average.GPweight = (class1.GPweight+class2.GPweight+class3.GPweight)/3;
Average.grade = findGrade(Average);
cout << "Class Percent Grade GP(Unweighted) GP(Weighted)" << endl;
cout << class1.name << " " << class1.percent << " " << class1.grade << " " << class1.GP << " " << class1.GPweight <<endl;
cout << class2.name << " " << class2.percent << " " << class2.grade << " " << class2.GP << " " << class2.GPweight <<endl;
cout << class3.name << " " << class3.percent << " " << class3.grade << " " << class3.GP << " " << class3.GPweight <<endl;
cout << Average.name << " " << Average.percent << " " << Average.grade << " " << Average.GP << " " << Average.GPweight <<endl;
}
if (counter ==4){
Average.name = "Average";
Average.percent = (class1.percent+class2.percent+class3.percent+class4.percent)/4;
Average.GP = (class1.GP+class2.GP+class3.GP+class4.GP)/4;
Average.GPweight = (class1.GPweight+class2.GPweight+class3.GPweight+class4.GPweight)/4;
Average.grade = findGrade(Average);
cout << "Class Percent Grade GP(Unweighted) GP(Weighted)" << endl;
cout << class1.name << " " << class1.percent << " " << class1.grade << " " << class1.GP << " " << class1.GPweight <<endl;
cout << class2.name << " " << class2.percent << " " << class2.grade << " " << class2.GP << " " << class2.GPweight <<endl;
cout << class3.name << " " << class3.percent << " " << class3.grade << " " << class3.GP << " " << class3.GPweight <<endl;
cout << class4.name << " " << class4.percent << " " << class4.grade << " " << class4.GP << " " << class4.GPweight <<endl;
cout << Average.name << " " << Average.percent << " " << Average.grade << " " << Average.GP << " " << Average.GPweight <<endl;
}
if (counter ==5){
Average.name = "Average";
Average.percent = (class1.percent+class2.percent+class3.percent+class4.percent+class5.percent)/5;
Average.GP = (class1.GP+class2.GP+class3.GP+class4.GP+class5.GP)/5;
Average.GPweight = (class1.GPweight+class2.GPweight+class3.GPweight+class4.GPweight+class5.GPweight)/5;
Average.grade = findGrade(Average);
cout << "Class Percent Grade GP(Unweighted) GP(Weighted)" << endl;
cout << class1.name << " " << class1.percent << " " << class1.grade << " " << class1.GP << " " << class1.GPweight <<endl;
cout << class2.name << " " << class2.percent << " " << class2.grade << " " << class2.GP << " " << class2.GPweight <<endl;
cout << class3.name << " " << class3.percent << " " << class3.grade << " " << class3.GP << " " << class3.GPweight <<endl;
cout << class4.name << " " << class4.percent << " " << class4.grade << " " << class4.GP << " " << class4.GPweight <<endl;
cout << class5.name << " " << class5.percent << " " << class5.grade << " " << class5.GP << " " << class5.GPweight <<endl;
cout << Average.name << " " << Average.percent << " " << Average.grade << " " << Average.GP << " " << Average.GPweight <<endl;
}
if (counter ==6){
Average.name = "Average";
Average.percent = (class1.percent+class2.percent+class3.percent+class4.percent+class5.percent+class6.percent)/6;
Average.GP = (class1.GP+class2.GP+class3.GP+class4.GP+class5.GP+class6.GP)/6;
Average.GPweight = (class1.GPweight+class2.GPweight+class3.GPweight+class4.GPweight+class5.GPweight+class6.GPweight)/6;
Average.grade = findGrade(Average);
cout << "Class Percent Grade GP(Unweighted) GP(Weighted)" << endl;
cout << class1.name << " " << class1.percent << " " << class1.grade << " " << class1.GP << " " << class1.GPweight <<endl;
cout << class2.name << " " << class2.percent << " " << class2.grade << " " << class2.GP << " " << class2.GPweight <<endl;
cout << class3.name << " " << class3.percent << " " << class3.grade << " " << class3.GP << " " << class3.GPweight <<endl;
cout << class4.name << " " << class4.percent << " " << class4.grade << " " << class4.GP << " " << class4.GPweight <<endl;
cout << class5.name << " " << class5.percent << " " << class5.grade << " " << class5.GP << " " << class5.GPweight <<endl;
cout << class6.name << " " << class6.percent << " " << class6.grade << " " << class6.GP << " " << class6.GPweight <<endl;
cout << Average.name << " " << Average.percent << " " << Average.grade << " " << Average.GP << " " << Average.GPweight <<endl;
}
if (counter ==7){
Average.name = "Average";
Average.percent = (class1.percent+class2.percent+class3.percent+class4.percent+class5.percent+class6.percent+class7.percent)/7;
Average.GP = (class1.GP+class2.GP+class3.GP+class4.GP+class5.GP+class6.GP+class7.GP)/7;
Average.GPweight = (class1.GPweight+class2.GPweight+class3.GPweight+class4.GPweight+class5.GPweight+class6.GPweight+class7.GPweight)/7;
Average.grade = findGrade(Average);
cout << "Class Percent Grade GP(Unweighted) GP(Weighted)" << endl;
cout << class1.name << " " << class1.percent << " " << class1.grade << " " << class1.GP << " " << class1.GPweight <<endl;
cout << class2.name << " " << class2.percent << " " << class2.grade << " " << class2.GP << " " << class2.GPweight <<endl;
cout << class3.name << " " << class3.percent << " " << class3.grade << " " << class3.GP << " " << class3.GPweight <<endl;
cout << class4.name << " " << class4.percent << " " << class4.grade << " " << class4.GP << " " << class4.GPweight <<endl;
cout << class5.name << " " << class5.percent << " " << class5.grade << " " << class5.GP << " " << class5.GPweight <<endl;
cout << class6.name << " " << class6.percent << " " << class6.grade << " " << class6.GP << " " << class6.GPweight <<endl;
cout << class7.name << " " << class7.percent << " " << class7.grade << " " << class7.GP << " " << class7.GPweight <<endl;
cout << Average.name << " " << Average.percent << " " << Average.grade << " " << Average.GP << " " << Average.GPweight <<endl;
}
if (counter ==8){
Average.name = "Average";
Average.percent = (class1.percent+class2.percent+class3.percent+class4.percent+class5.percent+class6.percent+class7.percent+class8.percent)/8;
Average.GP = (class1.GP+class2.GP+class3.GP+class4.GP+class5.GP+class6.GP+class7.GP+class8.GP)/8;
Average.GPweight = (class1.GPweight+class2.GPweight+class3.GPweight+class4.GPweight+class5.GPweight+class6.GPweight+class7.GPweight+class8.GPweight)/8;
Average.grade = findGrade(Average);
cout << "Class Percent Grade GP(Unweighted) GP(Weighted)" << endl;
cout << class1.name << " " << class1.percent << " " << class1.grade << " " << class1.GP << " " << class1.GPweight <<endl;
cout << class2.name << " " << class2.percent << " " << class2.grade << " " << class2.GP << " " << class2.GPweight <<endl;
cout << class3.name << " " << class3.percent << " " << class3.grade << " " << class3.GP << " " << class3.GPweight <<endl;
cout << class4.name << " " << class4.percent << " " << class4.grade << " " << class4.GP << " " << class4.GPweight <<endl;
cout << class5.name << " " << class5.percent << " " << class5.grade << " " << class5.GP << " " << class5.GPweight <<endl;
cout << class6.name << " " << class6.percent << " " << class6.grade << " " << class6.GP << " " << class6.GPweight <<endl;
cout << class7.name << " " << class7.percent << " " << class7.grade << " " << class7.GP << " " << class7.GPweight <<endl;
cout << class8.name << " " << class8.percent << " " << class8.grade << " " << class8.GP << " " << class8.GPweight <<endl;
cout << Average.name << " " << Average.percent << " " << Average.grade << " " << Average.GP << " " << Average.GPweight <<endl;
}
return 0;
}

New Topic/Question
Reply



MultiQuote



|