#include<iostream>
#include <string>
using namespace std;
static float line=0;
class Student
{
protected:
string num;string name;
public:
Student(string num1,string name1):num(num1),name(name1)
{}
virtual void display()=0;
};
class GroupA:public Student
{
private:
int s1,s2;
public:
GroupA(string num1,string name1,int s11,int s22):
Student(num1,name1),s1(s11),s2(s22)
{float haha;
haha=(s1+s2)*1.0/2;
if(haha>line) line=haha;
}
virtual void display()
{float haha;haha=(s1+s2)*1.0/2;
if(haha==line) cout<<num<<" "<<name<<endl;
}
};
class GroupB:public Student
{
private:
int s1,s2;
char gs;
public:
GroupB(string num1,string name1,int s11,int s22,char gss):
Student(num1,name1),s1(s11),s2(s22),gs(gss)
{
float haha;
haha=(s1+s2)*1.0/2;
if(haha>line) line=haha;
}
virtual void display()
{
float haha;haha=(s1+s2)*1.0/2;
if(haha==line) cout<<num<<" "<<name<<endl;
else if(haha>=line*0.7&&gs=='A')
cout<<num<<" "<<name<<endl;
}
};
class GroupC:public Student
{
private:
int s1,s2,s3,s4,s5;
public:
GroupC(string num1,string name1,int s11,int s22,int s33,int s44,int s55):
Student(num1,name1),s1(s11),s2(s22),s3(s33),s4(s44),s5(s55){}
virtual void display()
{
float haha;haha=(s1+s2+s3+s5+s4)*1.0/5;
if(haha>=line*0.9)
{
cout<<num<<" "<<name<<endl;
cout<<haha<<" "<<line*0.9<<" mark"<<endl;
}
}
};
int main()
{
const int Size=50;
string num, name;
int i,ty,s1,s2,s3,s4,s5;
char gs;
Student *pS[Size];
int count=0;
for(i=0;i<Size;i++){
cin>>ty;
if(ty==0) break;
cin>>num>>name>>s1>>s2;
switch(ty){
case 1:pS[count++]=new GroupA(num, name, s1, s2); break;
case 2:cin>>gs; pS[count++]=new GroupB(num, name, s1,s2, gs); break;
case 3:cin>>s3>>s4>>s5; pS[count++]=new GroupC(num, name, s1,s2,s3,s4,s5); break;
}
}
for(i=0;i<count;i++) {
pS[i]->display();
delete pS[i];
}
return 0;
}
函数17题
最新推荐文章于 2025-04-13 21:58:14 发布