数据结构作业 运动会分数统计 c++

/  说明  ///
///        共有N个学校参加运动会,编号为1~N。                ///
///            共有W个项目,编号为1~W ///
///  在某个项目结束后可以进行该项目的数据输入 ///
/// 可以显示指定项目的所有获奖信息     ///
///   指定编号的学校的获奖信息 ///
///  可以对所有学校的总成绩进行统计和排名显示 ///
///          每个项目去前三名的运动员获得极分 ///
#include "iostream.h"
#include "stdlib.h" 
#include "stdlib.h"

  
#define OK 1 
#define ERROR 2
#define SN    8                         //参加比赛的学校数

typedef int Status;

int NodeNum=0;                      //全局变量,当前节点个数


typedef struct 
{
char StudentsName[20];
int  SchoolName;
int  Rank;
}Event;

typedef struct xiangmu
{
int EventNum;
Event StudentScore[3];
struct xiangmu *NextEvent;

}xiangmu,*EventNode;

EventNode LastEvent;

//输入数据,建立链表/
Status Input(EventNode &head)
{
cout<<"***************项目成绩输入*****************"<<endl;
int i;
EventNode NewEvent;
NewEvent=(EventNode)malloc(sizeof(xiangmu));
if(!NewEvent) return ERROR;

cout<<"请输入该项目的编号:";
cin>>NewEvent->EventNum;
cout<<endl<<endl;
for(i=0;i<3;i++)
{
cout<<"请输入第"<<i+1<<"名姓名:";
cin>>NewEvent->StudentScore[i].StudentsName;
cout<<"请输入运动员学校编号:";
cin>>NewEvent->StudentScore[i].SchoolName;
cout<<"请输入运动员分数:";
cin>>NewEvent->StudentScore[i].Rank;
cout<<endl;
}
if(head==NULL) 
head=NewEvent;       //头节点为空,新节点做表头
else 
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
运动会分数统计 问题描述:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 功能要求: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分, 3) 可以按学校编号或名称、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 5) 数据存入文件并能随时查询 6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构; 测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;
好的,以下是一个简单的数据结构课程设计运动会分数分析代码,使用C++语言实现: ```cpp #include <iostream> #include <fstream> #include <string> #include <vector> #include <algorithm> using namespace std; struct Athlete { string name; double score; }; bool cmp(const Athlete &a, const Athlete &b) { return a.score > b.score; } int main() { ifstream infile("score.txt"); // 从文件中读取成绩 vector<Athlete> athletes; string name; double score; while (infile >> name >> score) { athletes.push_back({name, score}); } infile.close(); sort(athletes.begin(), athletes.end(), cmp); // 按分数从高到低排序 int n = athletes.size(); double sum = 0; for (int i = 0; i < n; i++) { sum += athletes[i].score; } double average = sum / n; // 计算平均分数 cout << "运动会分数分析报告:" << endl; cout << "---------------------" << endl; cout << "参赛人数:" << n << endl; cout << "平均分数:" << average << endl; cout << "前三名成绩:" << endl; for (int i = 0; i < 3 && i < n; i++) { cout << athletes[i].name << ": " << athletes[i].score << endl; } return 0; } ``` 以上代码通过打开名为score.txt的文件,依次读取每个运动员的姓名和分数,将其存储在一个名为athletes的向量中。然后,使用STL的sort函数将运动员按照分数从高到低排序,并计算所有分数的平均值。最后输出运动会分数分析报告,包括参赛人数、平均分数以及前三名的成绩和姓名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值