Problem C: 合唱比赛开始了!
来源:互联网 发布:mysql中select语句 编辑:程序博客网 时间:2024/05/06 02:13
Problem C: 合唱比赛开始了!
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1122 Solved: 628
[Submit][Status][Web Board]
Description
为迎接计算机科技文化节的到来,我院面向一年级学生举办了一场合唱比赛。邀请了若干位专家担任评委,并为每个参赛队评分。现在,请设计一个程序来展示这个比赛过程。
其中,类 Team描述了参赛队的信息,包括:专业名称、每个专家给该参赛队的评分以及最终得分等。类Contest描述了竞赛的信息,包括各个参赛队的列表,并提供
1. void Input()方法:用于输入所有参赛队的信息;
2. void Compute()方法:计算每个代表带队的最终得分。
3. void Show()方法:显示所有代表队的信息。
4. void Sort()方法:根据代表队的最终得分进行排序。
要求:
1. 假设有M个代表队参加比赛,有N个评委进行评分,且评分标准包括P项。
2. 每个评委将为每个代表队打出P个分项分,每项得分都在0~100之间,一个评委为一个代表队评出的最终分数是所给出的所有分项分的平均分。如:P=3,评委1给代表队x打的3个分数为100,90,80,则x代表队得到的来自于评委1的分数为(100+90+80)/3=90。
3. 每个代表队得到的最终分数是N个评委的给出的N个分数值,去掉1个最高分,1个最低分,剩余分数的平均值。如:经过上一步的计算,x代表队得到的来自N=4个评委的得分分别是100,90,80,70,则x代表队的最终得分是(90+80)/2=85。
Input
输入有多行。第一行分别输入M>1,N>3,P>0表示代表队数量、评委人数以及评分标准数。
之后分别输入M个代表的信息。每个代表队信息的第一行是队伍的专业名(10个字母以内),之后的N行是N个评委为该代表队打的分数,其每行有P个数,分别是该评委为该代表队打出的各个分项分。
Output
输出有M行,根据每个代表队的得分,按照从大到小的顺序输出。其中专业名称靠左输出,占11个字符,之后输出成绩。成绩输出2位小数。假定所有队伍的得分都不相同。
Sample Input
Sample Output
HINT
用left来让输出左对齐。
Append Code
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <vector>#include <sstream>#include <string>#include <iomanip>#include <cmath>using namespace std;class Contest;class Team{friend class Contest;public:string name;double score[10][10];double sum[10];double ave;Team() :ave(0){memset(score, 0, sizeof(score));//如何对类中的数组赋初值!memset(sum, 0, sizeof(sum));}};class Contest{friend class Team;public:Team team[10];int M, N, P;void Input(){cin >> M >>N >> P;for (int i = 0; i<M; i++){cin >> team[i].name;//队伍名称for (int j = 0; j<N; j++){for (int k = 0; k < P; k++){cin >> team[i].score[j][k];team[i].sum[j] += team[i].score[j][k];}team[i].sum[j] = team[i].sum[j] / P;//平均分}}for (int i = 0; i < M; i++){double ma = team[i].sum[0], mi = team[i].sum[0];for (int j = 0; j < N; j++){if (ma < team[i].sum[j])ma = team[i].sum[j];if (mi > team[i].sum[j])mi = team[i].sum[j];team[i].ave = team[i].sum[j] + team[i].ave;}team[i].ave = team[i].ave-ma-mi;}}void Compute(){for (int i = 0; i<M; i++){team[i].ave = team[i].ave / (N - 2);}}void Show(){for (int i = 0; i<M; i++){cout << setiosflags(ios::left) << setw(11) << team[i].name;;cout << fixed << setprecision(2) << team[i].ave << endl;}}void Sort(){for (int i = 0; i<M - 1; i++){for (int j = 0; j<M - i - 1; j++){if (team[j].ave <team[j + 1].ave){Team temp;temp = team[j];team[j] = team[j + 1];team[j + 1] = temp;}}}}};int main(){Contest contest;contest.Input();contest.Compute();contest.Sort();contest.Show();return 0;}1.对数组进行初始化memset(a,0,sizeof(a));准确地说应该是赋值操作
- Problem C: 合唱比赛开始了!
- Problem C: 合唱比赛开始了!
- Problem B: 合唱比赛开始了!
- Problem B: 合唱比赛开始了!
- Problem B: 合唱比赛开始了!
- 合唱比赛
- 微软imagine cup 2008 比赛开始了
- 开始学习C了
- 开始学C了
- 开始研究c 了
- 世界游泳锦标赛的游泳比赛终于开始了
- 第八届湘潭大学程序设计比赛 Problem C Cipher Lock
- Problem C: 选举班干部了!
- Problem C: 选举班干部了!
- Problem C: 选举班干部了!
- C语言学习开始了
- 我开始了学C#!
- 开始了C语言教学
- POJ 1142 Smith Numbers 笔记
- 数据库定时备份
- Java List容器中与equals()方法相关的那些方法
- 指向指针的指针
- Android Studio在同一个窗口中打开多个Project【附效果图附源码】
- Problem C: 合唱比赛开始了!
- 中断及其处理(1201)
- Android使用TabLayout+ViewPager实现顶部滑动菜单栏
- 函数和指针
- 使用YOCOv2 处理bounding ,以跟踪图像中某些类物体的移动
- 剑指Offer--层序遍历二叉树
- 51学习库(8)--DS1302时钟模块
- CPU每个核心的占用率测量
- Spring方法拦截器MethodInterceptor