#include <iostream>
#include <string>
using namespace std;
class CStudent {
public:
virtual ~CStudent()
{
//
}
virtual bool IsShaoXianDuiYuan() = 0;
virtual bool IsGongQingTuanYuan() = 0;
virtual bool ExistXueFen(int &v) = 0;
void input(int id,string name, char sex,int age)
{
mId = id;
mName = name;
mSex = sex;
mAge = age;
}
virtual void print() = 0;
public:
int mId;
string mName;
char mSex;
int mAge;
};
class CPrimaryStudent : public CStudent {
public:
bool IsShaoXianDuiYuan()
{
return mShaoXianDuiYuan;
}
bool IsGongQingTuanYuan()
{
return false;
}
bool ExistXueFen(int &v)
{
return false;
}
void print()
{
cout << "CPrimaryStudent : id = " << mId
<< ", name = " << mName
<< ", sex = " << mSex
<< ", age = " << mAge
<< ", shaoxianduiyuan = " << mShaoXianDuiYuan
<< endl;
}
public:
bool mShaoXianDuiYuan;
};
class CMiddlStudent : public CStudent {
public:
bool IsShaoXianDuiYuan()
{
return false;
}
bool IsGongQingTuanYuan()
{
return mGongQingTuanYuan;
}
bool ExistXueFen(int &v)
{
return false;
}
void print()
{
cout << "CMiddlStudent : id = " << mId
<< ", name = " << mName
<< ", sex = " << mSex
<< ", age = " << mAge
<< ", gongqingtuanyuan = " << mGongQingTuanYuan
<< endl;
}
public:
bool mGongQingTuanYuan;
};
class CCollegeStudent : public CStudent {
public:
bool IsShaoXianDuiYuan()
{
return false;
}
bool IsGongQingTuanYuan()
{
return false;
}
bool ExistXueFen(int &v)
{
v = mXueFen;
return true;
}
void print()
{
cout << "CCollegeStudent : id = " << mId
<< ", name = " << mName
<< ", sex = " << mSex
<< ", age = " << mAge
<< ", xuefen = " << mXueFen
<< endl;
}
public:
int mXueFen;
};
int main(void)
{
CStudent *p[3] = {nullptr};
// 读取
for (int i = 0; i < 3; ++i) {
int id;
string name;
char sex;
int age;
cin >> id >> name >> sex >> age;
if (age >= 6 && age <= 11) {
CPrimaryStudent *s = new CPrimaryStudent();
cin >> s->mShaoXianDuiYuan;
p[i] = s;
} else if (age >= 12 && age <= 17) {
CMiddlStudent *s = new CMiddlStudent();
cin >> s->mGongQingTuanYuan;
p[i] = s;
} else if (age >= 18 && age <= 22) {
CCollegeStudent *s = new CCollegeStudent();
cin >> s->mXueFen;
p[i] = s;
} else {
continue;
}
p[i]->mId = id;
p[i]->mName = name;
p[i]->mSex = sex;
p[i]->mAge = age;
}
// 打印
for (int i = 0; i < 3; ++i) {
if (p[i] == nullptr) {
continue;
}
p[i]->print();
}
// 释放
for (int i = 0; i < 3; ++i) {
if (p[i] == nullptr) {
continue;
}
delete p[i];
}
return 0;
}