/* Program for hybrid inheritance(using virtual function) */
/* Student result based on exam score and sports,using
hybrid(multilevel,multipath)inheritance */
#include<iostream.h>
#include<conio.h>
#include<string.h>
const int max_len=25;
class person
{
private:
char name[max_len];
char sex;
int age;
public:
void readperson()
{
cout<<"\nEnter Name:";
cin>>name;
cout<<"\nEnter sex:";
cin>>sex;
cout<<"\nEnter age:";
cin>>age;
}
void displayperson()
{
cout<<"Name:"<<name<<endl;
cout<<"Sex:"<<sex<<endl;
cout<<"age:"<<age<<endl;
}
};
class sports:public virtual person //virtual class
{
private:
char name[max_len];//name of game
int score; //score awarded for result declaration
protected:
void readdata()
{
cout<<"\nEnter gamed played:";
cin>>name;
cout<<"\nEnter game score:";
cin>>score;
}
void displaydata()
{
cout<<"\nSports played:"<<name<<endl;
cout<<"Game score:"<<score<<endl;
}
int sportsscore()
{
return score;
}
};
class student:public virtual person //virtual class
{
private:
int rollno;
char branch[30];
public:
void readstudentdata()
{
cout<<"\nEnter rollno:";
cin>>rollno;
cout<<"\nEnter branch in studying:";
cin>>branch;
}
void putstudentdata()
{
cout<<"\nROllno:"<<rollno;
cout<<"\nBranch:"<<branch;
}
};
class exam : public student
{
protected:
int sub1marks,sub2marks;
public:
void readdata()
{
cout<<"\nEnter scored in subject1:";
cin>>sub1marks;
cout<<"\nEnter scored in subject2:";
cin>>sub2marks;
}
void displaydata()
{
cout<<"\nInternal marks scored in subject1:"<<sub1marks;
cout<<"\nInternal marks scored in subject2:"<<sub2marks;
cout<<"\nTotal marks scored:"<<totalmarks()<<endl;
}
int totalmarks()
{
return(sub1marks+sub2marks);
}
};
class result: public exam ,public sports
{
private:
int total;
public:
void readdata()
{
readperson(); //access person class member
student::readstudentdata();
exam::readdata();//uses readdata of exam class
sports::readdata();
}
void displaydata()
{
displayperson();
student::putstudentdata();
exam::displaydata();
sports::displaydata();
cout<<"\nOverall performance,(exam+sports):"
<<percentage()<<"%";
}
int percentage()
{
return(exam::totalmarks()+sportsscore())/3;
}
};
void main()
{
clrscr();
result student;
cout<<"\nEnter data for student..."<<endl;
student.readdata();
cout<<"\nStudent details..."<<endl;
student.displaydata();
getch();
}
/*Ouput */
/*
Enter data for student...
Enter Name:Raj
Enter sex:M
Enter age:22
Enter rollno:4
Enter branch in studying:Computer-science
Enter scored in subject1:92
Enter scored in subject2:88
Enter gamed played:cricket
Enter game score:85
Student details...
Name:ROY
Sex:M
age:22
ROllno:4
Branch:Computer-science
Internal marks scored in subject1:92
Internal marks scored in subject2:88
Total marks scored:180
Sports played:cricket
Game score:85
Overall performance,(exam+sports):88%
*/