#include <bits/stdc++.h>
using namespace std;
int main( ) {
cout << "---------------------- GPA Calculator ----------------------" << endl;
int numOfSub, totalHours = 0 , hours , ans;
double GPA = 0 ;
string grade;
cout << "\n Do you have Old GPA? (1 for YES, 0 for NO): " ;
cin >> ans;
if ( ans == 1 ) {
cout << "\n Enter GPA and number of Credit hours: " ;
cin >> GPA >> hours;
GPA = GPA * hours;
totalHours + = hours;
}
cout << "\n Enter the number of subjects: " ;
cin >> numOfSub;
for ( int i = 1 ; i <= numOfSub; i++ ) {
cout << "\n Enter grade and hours for subject [" << i << "] : " ;
cin >> grade >> hours;
totalHours + = hours;
if ( grade == "A+" || grade == "a+" || grade == "ap" ) // marks >= 90
GPA + = hours * 4.0 ;
else if ( grade == "A" || grade == "a" ) // marks >= 85
GPA + = hours * 3.75 ;
else if ( grade == "B+" || grade == "b+" || grade == "bp" ) // marks >= 80
GPA + = hours * 3.4 ;
else if ( grade == "B" || grade == "b" ) // marks >= 75
GPA + = hours * 3.1 ;
else if ( grade == "C+" || grade == "c+" || grade == "cp" ) // marks >= 70
GPA + = hours * 2.8 ;
else if ( grade == "C" || grade == "c" ) // marks >= 65
GPA + = hours * 2.5 ;
else if ( grade == "D+" || grade == "d+" || grade == "dp" ) // marks >= 60
GPA + = hours * 2.25 ;
else if ( grade == "D" || grade == "d" ) // marks >= 50
GPA + = hours * 2 ;
else if ( grade == "F" || grade == "f" ) // marks < 50
GPA + = hours * 1 ;
}
cout << "\n The GPA is: " << setprecision( 3 ) << GPA / totalHours << " ,and total number of hours is " << totalHours << endl;
return 0 ;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpewogICAgY291dCA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHUEEgQ2FsY3VsYXRvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiA8PCBlbmRsOwogICAgaW50IG51bU9mU3ViLCB0b3RhbEhvdXJzID0gMCwgaG91cnMgLCBhbnM7CiAgICBkb3VibGUgR1BBID0gMDsKICAgIHN0cmluZyBncmFkZTsKICAgIGNvdXQgPDwgIlxuRG8geW91IGhhdmUgT2xkIEdQQT8gKDEgZm9yIFlFUywgMCBmb3IgTk8pOiAiOwogICAgY2luID4+IGFuczsKICAgIGlmKGFucyA9PSAxKXsKICAgICAgICBjb3V0IDw8ICJcbkVudGVyIEdQQSBhbmQgbnVtYmVyIG9mIENyZWRpdCBob3VyczogIjsKICAgICAgICBjaW4gPj4gR1BBID4+IGhvdXJzOwogICAgICAgIEdQQSA9IEdQQSAqIGhvdXJzOwogICAgICAgIHRvdGFsSG91cnMgKz0gaG91cnM7CiAgICB9CiAgICBjb3V0IDw8ICJcbkVudGVyIHRoZSBudW1iZXIgb2Ygc3ViamVjdHM6ICI7CiAgICBjaW4gPj4gbnVtT2ZTdWI7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG51bU9mU3ViOyBpKyspIHsKICAgICAgICBjb3V0IDw8ICJcbkVudGVyIGdyYWRlIGFuZCBob3VycyBmb3Igc3ViamVjdCBbIiA8PCBpIDw8ICJdIDogIjsKICAgICAgICBjaW4gPj4gZ3JhZGUgPj4gaG91cnM7CiAgICAgICAgdG90YWxIb3VycyArPSBob3VyczsKICAgICAgICBpZiAoZ3JhZGUgPT0gIkErIiB8fCBncmFkZSA9PSAiYSsiIHx8IGdyYWRlID09ICJhcCIpIC8vIG1hcmtzID49IDkwCiAgICAgICAgICAgIEdQQSArPSBob3VycyAqIDQuMDsKICAgICAgICBlbHNlIGlmIChncmFkZSA9PSAiQSIgfHwgZ3JhZGUgPT0gImEiKSAvLyBtYXJrcyA+PSA4NQogICAgICAgICAgICBHUEEgKz0gaG91cnMgKiAzLjc1OwogICAgICAgIGVsc2UgaWYgKGdyYWRlID09ICJCKyIgfHwgZ3JhZGUgPT0gImIrIiB8fCBncmFkZSA9PSAiYnAiKSAvLyBtYXJrcyA+PSA4MAogICAgICAgICAgICBHUEEgKz0gaG91cnMgKiAzLjQ7CiAgICAgICAgZWxzZSBpZiAoZ3JhZGUgPT0gIkIiIHx8IGdyYWRlID09ICJiIikgLy8gbWFya3MgPj0gNzUKICAgICAgICAgICAgR1BBICs9IGhvdXJzICogMy4xOwogICAgICAgIGVsc2UgaWYgKGdyYWRlID09ICJDKyIgfHwgZ3JhZGUgPT0gImMrIiB8fCBncmFkZSA9PSAiY3AiKSAvLyBtYXJrcyA+PSA3MAogICAgICAgICAgICBHUEEgKz0gaG91cnMgKiAyLjg7CiAgICAgICAgZWxzZSBpZiAoZ3JhZGUgPT0gIkMiIHx8IGdyYWRlID09ICJjIikgLy8gbWFya3MgPj0gNjUKICAgICAgICAgICAgR1BBICs9IGhvdXJzICogMi41OwogICAgICAgIGVsc2UgaWYgKGdyYWRlID09ICJEKyIgfHwgZ3JhZGUgPT0gImQrIiB8fCBncmFkZSA9PSAiZHAiKSAvLyBtYXJrcyA+PSA2MAogICAgICAgICAgICBHUEEgKz0gaG91cnMgKiAyLjI1OwogICAgICAgIGVsc2UgaWYgKGdyYWRlID09ICJEIiB8fCBncmFkZSA9PSAiZCIpIC8vIG1hcmtzID49IDUwCiAgICAgICAgICAgIEdQQSArPSBob3VycyAqIDI7CiAgICAgICAgZWxzZSBpZiAoZ3JhZGUgPT0gIkYiIHx8IGdyYWRlID09ICJmIikgLy8gbWFya3MgPCA1MAogICAgICAgICAgICBHUEEgKz0gaG91cnMgKiAxOwogICAgfQogICAgY291dCA8PCAiXG5UaGUgR1BBIGlzOiAiIDw8IHNldHByZWNpc2lvbigzKSA8PCBHUEEgLyB0b3RhbEhvdXJzIDw8ICIgLGFuZCB0b3RhbCBudW1iZXIgb2YgaG91cnMgaXMgIiA8PCB0b3RhbEhvdXJzIDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQ==