永发信息网

求用c++写一个统计学生成绩的程序,要求用动态存储分配思想完成数组的定义。

答案:3  悬赏:70  手机版
解决时间 2021-02-20 04:03
要求有4个子函数(1)输入n个学生m门功课的成绩(2)每个学生的平均分;(3)每门功课的平均分;(4)找出最高分所对应的学生和功课。 谢谢大神
最佳答案
#include
#include
using std::cin;
using std::cout;
using std::endl;
using std::string;

class performance
{
private:
int numsubject;//number of your subjects
int numstudent;//number of student
float**p;
string *student;
string *subject;
protected:
int StudentPos(const string&str);
int SubjectPos(const string&str);
public:
performance();
float AverageStudent(const string&nameOFstudent);
float AverageSubject(const string&nameOFsubject);
void MaxScore(const string&nameOFsubject);
~performance();
};

int performance::StudentPos(const string &str)
{
for(int i=0;i {
if(!str.compare(student[i]))
{
return i+1;
}
}
return INT_MAX;
}

int performance::SubjectPos(const string&str)
{
for(int i=0;i {
if(!str.compare(subject[i]))
{
return i+1;
}
}
return INT_MAX;
}

performance::performance()
{
cout<<"please input number of student:\n";
cin>>numstudent;
cout<<"please input number of your subjects:\n";
cin>>numsubject;
if(numstudent&&numsubject)
{
p=new float*[numstudent];
student=new string[numstudent];
subject=new string[numsubject];
for(int i=0;i {
p[i]=new float[numsubject];
}
cout<<"input "< for(int i=0;i {
cin>>student[i];
}
cout<<"input "< for(int i=0;i {
cin>>subject[i];
}
for(int i=0;i {
cout<<"输入"< for(int j=0;j {
cout<<"输入"< cin>>p[i][j];
}
}
}
}

float performance::AverageStudent(const string &str)
{
int n=StudentPos(str);
float sum=0;
if(numstudent&&numsubject&&n {
for(int i=0;i {
sum+=p[n-1][i];
}
return sum/numsubject;
}
return sum;
}


float performance::AverageSubject(const string&str)
{
int n=SubjectPos(str);
float sum=0;
if(numsubject&&numstudent&&n {
for(int i=0;i {
sum+=p[i][n-1];
}
return sum/numstudent;
}
return sum;
}

void performance::MaxScore(const string&str)
{
int n=SubjectPos(str);
if(numstudent&&n {
int index=0;
for(int i=1;i {
if(p[index][n-1] {
index=i;
}
}
cout< for(int i=0;i {
if(p[i][n-1]==p[index][n-1])
{
cout< }
}
cout<<"\n";
}
}

performance::~performance()
{
for(int i=0;i {
delete[] p[i];
}
if(p)
{
delete[]p;
}
if(student)
{
delete[]student;
}
if(subject)
{
delete[]subject;
}
}

void main()
{
performance perform;
cout<<"张的平均分:"< cout<<"物理的平均分:"< perform.MaxScore("数学");
}测试数据:

张 王 李 赵
数学 语文 英语 物理 化学 生物
120 111 121 80 78 90 
131 144 117 79 88 91
134 109 134 67 79 88
134 109 134 67 79 88
全部回答
c语言课本的课后题 谭浩强的那本书,直接在课后指导书上有答案
作业代写。有意向请加头像中的号。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
青蛙皇子地址有知道的么?有点事想过去
网签购房合同需要注意什么? 6点建议供参考
我苏州人,没房子,户口怎么迁
在我国,大额可转让定期存单作为银行重要的金
打什么成语,跪求
花牛李家地址在什么地方,想过去办事
在济南省立医院做负压能能用医保报销吗?
在手机上怎么操作充值话费啊?
【分开英文】把...分开英文词组怎么说
形容岁月对女人的诗句
地面特战队(Earth's Special Forces) 简
新豪门一族陶瓷地址在哪,我要去那里办事
联想ideapad s400怎样用hdmi连接电视
哪里有刷赞的?
2020年星级口算天天练三年级数学下册苏教版答
推荐资讯
从深圳过关去香港,能从澳门回深圳吗
创新汽车租赁地址在哪,我要去那里办事
电子琴自弹自唱该怎么弹.
北洋小区地址有知道的么?有点事想过去
下列指导选择和使用测试覆盖率的原则中错误的
我要出售游戏币我第一次上5173不懂,看见别人
大夏王侯宁辰经历,求具体,分身什么意思,越
吸小马多长时间毒可以排完
咕噜卤鲜卤坊在什么地方啊,我要过去处理事情
如果一个人说爱你,但是他又经常几天不理你,
我的ipad不小心被摔了一下,就黑屏了。动也动
TT探索者, 我在延边,可是在家看不了了,以前
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?