学术休假期 大奖赛计分系统进阶版

来源:互联网 发布:能调频的收音机软件 编辑:程序博客网 时间:2024/05/02 04:43

问题及代码:

/* *copyright (c) 2014,烟台大学计算机学院 *all rights reserved. *文 件 名 : 大奖赛记分系统.cpp *作    者 :冷基栋 *完成日期 :2015年3月5号 *版 本 号 :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+1<<"位选手得分:";        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+1<<"位选手的最后得分是:"<<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+1<<"名:"<<"选手"<<r[i][0]+1<<endl;}

运行结果:


知识点总结:

成绩保存到文档

学习心得:

好好学习 天天向上

感谢党和国家领导人



0 0