一个学生类,有三个私有成员:名字name、课程学分指针score、课程成绩指针grade。定义一个友元函数,求全班同学的平均绩点。单门课程的学分绩点=学分*绩点=学分*(成绩/10-5) ; 全班同学的平均绩点是 所有同学的全部课程的学分绩点之和/所有同学学分数之和。单个同学的课程数不超过100门。全班同学人数不超过100名。

输入说明:

输入若干行。

每行一个学生的信息:第一个输入是学生的名字,第二个输入是第一门课程的学分,第三个输入是第一门课程的成绩,第四个输入是第二门课程的学分,第五个输入是第二门课程的成绩,以此类推,最后以-1表示该行输入结束。每个学生的课程数不超过100门。

最后以 no 表示输入结束。

输出一行,即该全班同学的平均绩点。

函数接口定义:

//这是求全部同学平均绩点的友元函数的声明:
friend double averagegrade(student *stu, int count)

其中 *stucount 都是用户传入的参数。 *stu 是传入的学生对象数组的首指针,count是全班学生数量。

裁判测试程序样例:


#include<iostream>
#include<string>
using namespace std;
class student{private:double *grade;double *score;string name;
public:student( ){grade=NULL;score=NULL;}student(string n, double *g, double *s){name=n;grade=g;score=s;}friend double averagegrade(student *stu, int count);
};
/* 请在这里填写答案 */int main()
{student stu[100];double s[100][100], g[100][100];int count=0;string n;for(int i=0;i<100;i++){cin>>n;if(n=="no") break;count++;for(int j=0;j<100;j++){cin>>s[i][j];if(s[i][j]==-1) break;cin>>g[i][j];}stu[i]=student(n, g[i], s[i]);}cout<<averagegrade(stu, count);return 0;
}

输入样例:

bob 3 90 2 68.5 2.5 50 -1
andy 3 80 2 77 -1
no

输出样例:

2.408

实现代码如下:

double averagegrade(student *stu, int count)
{int i,j;double sum1=0,sum2=0,sum;for(i==0;i<count;i++)for(j=0;stu[i].score[j]!=-1;j++){sum1+=stu[i].score[j]*(stu[i].grade[j]/10-5);sum2+=stu[i].score[j];}if(sum2==0||sum1==0)return 0;return sum1/sum2;
}

PTA 全班同学的平均绩点 (20 分)(友元函数)相关推荐

  1. [C++/PTA] 2017final友元函数之全班同学的平均绩点

    [C++/PTA] 2017final友元函数之全班同学的平均绩点 题目要求 解题思路 代码 总结 题目要求 一个学生类,有三个私有成员:名字name.课程学分指针score.课程成绩指针grade. ...

  2. PTA:6-2顺序表操作集(20分)

    大一下半期数据结构 数据结构题目集 PTA:顺序表操作集(20分) 本题要求实现顺序表的操作集. 函数接口定义 List MakeEmpty(); Position Find( List L, Ele ...

  3. C++学习之路 | PTA乙级—— 1087 有多少不同的值 (20 分)(精简)

    1087 有多少不同的值 (20 分) 当自然数 n 依次取 1.2.3.--.N 时,算式 ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ 有多少个不同的值?(注:⌊x⌋ 为取整函数,表示不超过 x 的最大自然 ...

  4. C++学习之路 | PTA乙级—— 1049 数列的片段和 (20 分)(精简)

    1049 数列的片段和 (20 分) 给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段.例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0. ...

  5. C++学习之路 | PTA乙级—— 1039 到底买不买 (20 分)(精简)

    1039 到底买不买 (20 分) 小红想买些珠子做一串自己喜欢的珠串.卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖.于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子 ...

  6. C++学习之路 | PTA乙级—— 1038 统计同成绩学生 (20 分)(精简)

    1038 统计同成绩学生 (20 分) 本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式: 输入在第 1 行给出不超过 10 ​5 ​​ 的正整数 N,即学生总人数.随后一 ...

  7. C++学习之路 | PTA乙级—— 1037 在霍格沃茨找零钱 (20 分)(精简)

    1037 在霍格沃茨找零钱 (20 分) 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon),二十 ...

  8. C++学习之路 | PTA乙级—— 1003 我要通过! (20分)(精简)

    1003 我要通过! (20分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件, ...

  9. C++学习之路 | PTA乙级—— 1002 写出这个数 (20分)(精简)

    1002 写出这个数 (20分) 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 10 ...

最新文章

  1. 【强烈推荐】Github star 10K+,周志华机器学习详细公式推导!
  2. 是什么造成了网管员的低工资?
  3. java 耗时_Java使用简单的方法计算代码耗时
  4. (转)oracle 11g安装后用户名忘记怎么办
  5. 让你的AI绿起来,艾伦研究所提出深度学习效率评估标准Green AI
  6. hbase 协处理器 部署_hbase中安装和删除observer协处理器
  7. JZOJ 5436. 【NOIP2017提高A组集训10.30】Group
  8. codesys 简单案例_第一章:初识Codesys-1.4从一个示例程序讲起
  9. 使用 SAP Uiveri5 遇到 passport 依赖的问题以及解决方案
  10. 世界上最热的地方在哪里?原来火焰山不是第一...
  11. js中的转译_JavaScript中的填充和转译
  12. 实现textarea限制输入字数
  13. PHP+SQLite3简约网址导航、书签管理器网站源码
  14. matlab 有公式 变量,matlab两个变量拟合公式x=0.40.450.50.550? 爱问知识人
  15. matlab仿真弹簧波,基于Matlab/Simulink的三弹簧谐振子微振动的仿真实验
  16. 在linux 创建网络会话和绑定两块网卡
  17. python变量及其作用域,闭包
  18. python颜色校正
  19. 在线音乐播放器 --- 图片上传
  20. 精益管理研究院陈逸超 | 用精益思维创造数据价值金矿

热门文章

  1. java打印鸭子,python – 鸭子打字和(java)界面的概念
  2. table文字水平垂直居中
  3. 炫酷的可视化工具:processing 初识
  4. hive select报错 Unable to determine if hdfs
  5. linux 添加环境变量 PATH
  6. 由Mifare 1卡破解带来的危险以及应对方法
  7. python爬虫教程 遍历所有网页
  8. 企业直播服务行业和应用场景
  9. 办公室设计需求表_重新设计您的办公室!
  10. (unity)游戏中摇杆:控制角色移动