学术休假项目七:大奖赛记分系统

来源:互联网 发布:查看进程占用端口 编辑:程序博客网 时间:2024/04/26 19:42

问题及代码:

/* *copyright (c) 2014,烟台大学计算机学院 *all rights reserved. *文 件 名 : 大奖赛记分系统.cpp *作    者 :白云飞 *完成日期 :2015年3月2号 *版 本 号 :v1.0 * *问题描述 :大奖赛记分系统 *输入描述 :选手人数,评委人数,选手得分 *程序输出 :选手最后得分,排名 */#include <iostream>#include <iomanip>#include <cstdio>#include <fstream>#include <cstdlib>using namespace std;double s[100][20],r[100][2];void mark(double s[][20],int m,int n,int max1,int min1);void rank(double r[][2],int m,int n);int main(){    char d;    do    {        int  max1,min1,n,m;        cout<<"请输入评委人数:";        cin>>n;        cout<<"请输入选手人数:";        cin>>m;        cout<<"请输入打分范围:"<<endl;        cout<<"最高分:";        cin>>max1;        cout<<"最低分:";        cin>>min1;        mark  (s,m,n,max1,min1);        cout<<"选手排名为:"<<endl;        rank (r,m,n );        cout <<"********************SUCCESS********************"<<endl;        cout <<"按n退出,其他继续: ";        cin >>d;    }    while(d!='n');//进行判断    return 0;}void mark(double s[][20],int m,int n,int max1,int min1){    int i,j;    cout<<"请输入选手的成绩("<<min1<<"--"<<max1<<"):"<<endl;    cout<<"-----------------------------------------------"<<endl;    ofstream outfile("mark.txt",ios::out);    if(!outfile)    {        cerr<<"open error!"<<endl;    exit(1);    }    for(i=0; i<m; i++)    {        cout<<"第"<<i<<"位选手得分:";        double sum=0,max=-1,min=101,average=0,b;        for(j=0; j<n; j++)        {            cin>>s[i][j];            if(s[i][j]>max1||s[i][j]<min1)            {                cout<<"请重新输入分数"<<endl;                i=i-1;                continue;            }            b=s[i][j];            sum+=s[i][j];            if(b>=max&&b<=max1) max=b;            if(b<=min&&b>=min1) min=b;        }        cout << "去掉一个最高分:" <<max;        cout << " 去掉一个最低分:" <<min<< endl;        average=(sum-max-min)/(n-2);        cout <<"第"<<i<<"位选手的最后得分是:"<<average<<endl;//输出结果        r[i][1]=average;        outfile<<average<<endl;        cout<<"-----------------------------------------------"<<endl;    }outfile.close();}void rank(double r[][2],int m,int n){    int i,j,k;    double t;    for(i=0; i<n; i++)    {        r[i][0]=i;    }    for(j=0; j<=m-1; j++)        for(i=0; i<m-j-1; i++)            if (r[i][1]<r[i+1][1])            {                t=r[i][1];                r[i][1]=r[i+1][1];                r[i+1][1]=t;                k=r[i][0];                r[i][0]=r[i+1][0];                r[i+1][0]=k;            }    for(i=0; i<m; i++)        cout<<"第"<<i<<"名:"<<"选手"<<r[i][0]<<endl;}


运行结果:

 



学习心得:

以前写过一个简易版的大奖赛记分系统,在原有基础上加上了选手人数,排名,还有将成绩保存到文档中。


0 0
原创粉丝点击