寒假学术休假项目7-大奖赛计分系统(实用版)

来源:互联网 发布:流程优化的目的及意义 编辑:程序博客网 时间:2024/05/07 03:29
问题及代码:
/*   *Copyright (c)2015,烟台大学计算机与控制工程学院   *All rights reserved.   *文件名称:score.cpp   *作    者:单昕昕   *完成日期:2015年2月22日   *版 本 号:v1.0   *   *问题描述:大奖赛计分系统(实用版)*程序输入:选手、裁判人数,选手分数等。*程序输出:分数及排名等。  */ #include <iostream>#include <iomanip>#include <cstdio>using namespace std;double s[1000][20];void input_mark(int m,int n,double s[][20],double p,double q);void sort1(int m,int n,double s[][20]);void sort2(int m,int n,double f[][2]);void output_mark(int m,int n,double s[][20]);void calculate_mark(int max,int min,double s[][20],int x,double f[][2]);int main(){    int m,n,x;    cout<<"请输入评委的人数:";    cin>>m;    cout<<"请输入选手的人数:";    cin>>n;    double max,min,f[n][2];    cout<<"——————————————————————"<<endl;    cout<<"请输入打分范围:"<<endl;    cout<<"——————————————————————"<<endl;    cout<<"最低分:";    cin>>min;    cout<<"最高分:";    cin>>max;    cout<<"请输入选手的成绩:"<<endl;    input_mark(m,n,s,min,max);    cout<<"选手成绩降序排列如下:"<<endl;    sort1(m,n,s);    output_mark(m,n,s);    cout<<"请输入要去掉的最值数目:";    cin>>x;    calculate_mark(m,n,s,x,f);    cout<<"选手的最终排名为:"<<endl;    sort2(m,n,f);    return 0;}void input_mark(int m,int n,double s[][20],double p,double q){    int i,j;    for(i=0; i<n; i++)    {        cout<<"选手"<<i<<":";        for(j=0; j<m;)        {            cin>>s[i][j];            if(s[i][j]>=p&&s[i][j]<=q)            {                ++j;            }            else            {                cout<<"分数不在正确的范围内,请检查并请重新输入该选手的成绩"<<endl;                j--;            }        }    }}void sort1(int m,int n,double s[][20]){    int i,j,k;    double t;    for(k=0; k<n; k++)        for(j=0; j<=m-1; j++)            for(i=0; i<m-j-1; i++)                if (s[k][i]<s[k][i+1])                {                    t=s[k][i];                    s[k][i]=s[k][i+1];                    s[k][i+1]=t;                }}void output_mark(int m,int n,double s[][20]){    int i,j;    for(i=0; i<n; ++i)    {        cout<<"选手"<<i<<":";        for(j=0; j<m; ++j)            cout<<s[i][j]<<'\t';        cout<<endl;    }}void calculate_mark(int m,int n,double s[][20],int x,double f[][2]){    double sum;    int i,j;    for(i=0; i<n; ++i)        f[i][0]=i;    for(i=0; i<n; ++i)    {        sum=0;        for(j=x; j<m; ++j)        {            sum+=s[i][j];        }        cout<<"选手"<<i<<"得分是:"<<(sum/(m-x))<<"分"<<endl;        f[i][1]=sum/(m-x);    }}void sort2(int m,int n,double f[][2]){    int i,j,k;    double t;    for(j=0; j<=m-1; j++)        for(i=0; i<m-j-1; i++)            if (f[i][1]<f[i+1][1])            {                t=f[i][1];                f[i][1]=f[i+1][1];                f[i+1][1]=t;                k=f[i][0];                f[i][0]=f[i+1][0];                f[i+1][0]=k;            }    for(i=0; i<n; ++i)            cout<<"第"<<i<<"名:"<<"选手"<<f[i][0]<<endl;}



运行结果:


知识点总结:

吐血。。好多函数。。

注意对应。。


学习心得:

一定要耐下心啊啊啊~~~

二维数组作函数参数的时候一定要固定好第二维。。

0 0
原创粉丝点击