#include <iostream>
using namespace std;
class Student{
public:
double attn;
int n;
double *grades;
double CGPA;
Student(){
attn=0;
n=0;
grades=nullptr;
}
Student(double attn, int n, double* grades){
this->attn=attn;
this->n=n;
this->grades=new double[n];
for(int i=0;i<n;i++){
this->grades[i]=grades[i];
}
}
~Student(){
delete[] grades;
}
double calculateGradeSumOfCourses(){
double sum=0;
for(int i=0;i<n;i++){
sum+=grades[i];
}
return sum;
}
void calculateCGPA(){
if(n==0) {
CGPA=0;
return;
}
double sum=calculateGradeSumOfCourses();
CGPA=sum/n;
}
};
class L4Student : public Student{
public:
double thesis;
L4Student(){
thesis=0;
}
L4Student(double attn, int n, double* grades, double thesis): Student(attn, n, grades){
this->thesis=thesis;
}
void calculateCGPA(){
if(n==0) {
CGPA=0;
return;
}
double sum=calculateGradeSumOfCourses();
sum+=thesis;
CGPA=sum/(n+1);
}
};
int main(){
double gradesOfS[]={4.00, 3.75, 3.75, 3.5, 4.00};
Student s(1, 5, gradesOfS);
s.calculateCGPA();
cout<<s.CGPA<<endl;
double gradesOfL4S[]={4.00, 3.75, 3.5, 3.5, 2.50};
L4Student l4s(0.75, 5, gradesOfL4S, 4.00);
l4s.calculateCGPA();
cout<<l4s.CGPA<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjbGFzcyBTdHVkZW50ewpwdWJsaWM6CiAgICBkb3VibGUgYXR0bjsKICAgIGludCBuOwogICAgZG91YmxlICpncmFkZXM7CiAgICBkb3VibGUgQ0dQQTsKICAgIAogICAgU3R1ZGVudCgpewogICAgICAgIGF0dG49MDsKICAgICAgICBuPTA7CiAgICAgICAgZ3JhZGVzPW51bGxwdHI7CiAgICB9CiAgICBTdHVkZW50KGRvdWJsZSBhdHRuLCBpbnQgbiwgZG91YmxlKiBncmFkZXMpewogICAgICAgIHRoaXMtPmF0dG49YXR0bjsKICAgICAgICB0aGlzLT5uPW47CiAgICAgICAgdGhpcy0+Z3JhZGVzPW5ldyBkb3VibGVbbl07CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgICAgIHRoaXMtPmdyYWRlc1tpXT1ncmFkZXNbaV07CiAgICAgICAgfQogICAgfQogICAgflN0dWRlbnQoKXsKICAgICAgICBkZWxldGVbXSBncmFkZXM7CiAgICB9CiAgICBkb3VibGUgY2FsY3VsYXRlR3JhZGVTdW1PZkNvdXJzZXMoKXsKICAgICAgICBkb3VibGUgc3VtPTA7CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgICAgIHN1bSs9Z3JhZGVzW2ldOwogICAgICAgIH0KICAgICAgICByZXR1cm4gc3VtOwogICAgfQogICAgdm9pZCBjYWxjdWxhdGVDR1BBKCl7CiAgICAgICAgaWYobj09MCkgewogICAgICAgICAgICBDR1BBPTA7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZG91YmxlIHN1bT1jYWxjdWxhdGVHcmFkZVN1bU9mQ291cnNlcygpOwogICAgICAgIENHUEE9c3VtL247CiAgICB9Cn07CgoKY2xhc3MgTDRTdHVkZW50IDogcHVibGljIFN0dWRlbnR7CnB1YmxpYzoKICAgIGRvdWJsZSB0aGVzaXM7CiAgICAKICAgIEw0U3R1ZGVudCgpewogICAgICAgIHRoZXNpcz0wOwogICAgfQoKICAgIEw0U3R1ZGVudChkb3VibGUgYXR0biwgaW50IG4sIGRvdWJsZSogZ3JhZGVzLCBkb3VibGUgdGhlc2lzKTogU3R1ZGVudChhdHRuLCBuLCBncmFkZXMpewogICAgICAgIHRoaXMtPnRoZXNpcz10aGVzaXM7CiAgICB9CiAgICB2b2lkIGNhbGN1bGF0ZUNHUEEoKXsKICAgICAgICBpZihuPT0wKSB7CiAgICAgICAgICAgIENHUEE9MDsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBkb3VibGUgc3VtPWNhbGN1bGF0ZUdyYWRlU3VtT2ZDb3Vyc2VzKCk7CiAgICAgICAgc3VtKz10aGVzaXM7CiAgICAgICAgQ0dQQT1zdW0vKG4rMSk7CiAgICB9IAp9OwoKCmludCBtYWluKCl7CiAgICBkb3VibGUgZ3JhZGVzT2ZTW109ezQuMDAsIDMuNzUsIDMuNzUsIDMuNSwgNC4wMH07CiAgICBTdHVkZW50IHMoMSwgNSwgZ3JhZGVzT2ZTKTsKICAgIAogICAgcy5jYWxjdWxhdGVDR1BBKCk7CiAgICBjb3V0PDxzLkNHUEE8PGVuZGw7CiAgICAKICAgIGRvdWJsZSBncmFkZXNPZkw0U1tdPXs0LjAwLCAzLjc1LCAzLjUsIDMuNSwgMi41MH07CiAgICBMNFN0dWRlbnQgbDRzKDAuNzUsIDUsIGdyYWRlc09mTDRTLCA0LjAwKTsKICAgIAogICAgbDRzLmNhbGN1bGF0ZUNHUEEoKTsKICAgIGNvdXQ8PGw0cy5DR1BBPDxlbmRsOwogICAgcmV0dXJuIDA7Cn0K