寒假实践之—大奖赛计分系统



*copyright (c) 2014, 烟台大学计算机学院. 
 
*All rights reserved. 
 
*文件名称:test.cpp  

*作者:陆云杰 
 
*完成日期:2015年1月29日  
 
*版本号:v1.0 

*  
 
* 
 
*问题描述:一个可以统计选手的分数与排名的系统
 
*程序输入: 每个选手的每个评委的得分

*程序输出: 每个选手的最后得分和最终排名
 
*/ 

#include <fstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cstdlib>
using namespace std;
double s[100][10],f[100][2];
void read(int m,int n,double s[][10]);
void out(int m,int n,double s[][10]);
void caculate(int m,int n,double s[][10],double f[][2]);
void outfile(int m,int n,double f[][2]);
void Rank(int m,int n,double f[][2]);
int main()
{
    int n,m;
    cout<<"请输入评委人数:";
    cin>>m;
    cout<<endl;
    cout<<"请输入选手人数:";
    cin>>n;
    cout<<endl;
    cout<<"选手成绩范围是(0~10)"<<endl;
    read(m,n,s);
    out(m,n,s);
    caculate(m,n,s,f);
    Rank(m,n,f);
    outfile(m,n,f);
    return 0;
}
void read(int m,int n,double s[][10])
{
    int i,j,count=-1;
    double r[100],S;
    ifstream infile("score.txt",ios::in);
    if(!infile)
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    while(infile>>S)
    {
        count++;
        r[count]=S;
    }
    infile.close();
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
        s[i][j]=r[m*i+j];
}
void out(int m,int n,double s[][10])
{
    int i,j;
    for(i=0;i<n;i++)
    {
        cout<<"第"<<i+1<<"位选手的每个评委的得分分别是:";
        for(j=0;j<m;j++)
        {
            cout<<s[i][j]<<" ";
        }
        cout<<endl;
    }
}
void caculate(int m,int n,double s[][10],double f[][2])
{
    int i,j;
    double max=0,min=10,sum,average;
    for(i=0;i<n;i++)
    {
        f[i][0]=i+1;
        sum=0;
        cout<<"去掉一个最高分和一个最低分后第"<<i+1<<"位选手的最终得分是:";
        for(j=0;j<m;j++)
    {
        sum+=s[i][j];
        if(s[i][j]<=min)
            min=s[i][j];
        if(s[i][j]>=max)
            max=s[i][j];
    }
    cout<<setiosflags(ios::fixed)<<setprecision(1);
     average=(sum-max-min)/(m-2);
    f[i][1]=average;
    cout<<average<<endl;
    }
}
void outfile(int m,int n,double f[][2])
    {
        int i;
        ofstream outfile("rank.txt",ios::out);
        if(!outfile)
        {
            cerr<<"open error!"<<endl;
            exit(1);
        }
        for(i=0;i<n;i++)
        {
            outfile<<f[i][1]<<endl;
        }
        outfile.close();
    }
 void Rank(int m,int n,double f[][2])
 {
     int i,j,tep;
     double t;
     for(i=0;i<n;i++)
     {
    for(j=0;j<n-i-1;j++)
       {
           if(f[j][1]<f[j+1][1])
           {
               t=f[j][1];
               f[j][1]=f[j+1][1];
               f[j+1][1]=t;
               tep=f[j][0];
               f[j][0]=f[j+1][0];
               f[j+1][0]=tep;
           }
       }
     }
       for(i=0;i<n;i++)
        cout<<"第"<<i+1<<"名:选手"<<f[i][0]<<endl;
 }
   

学习心得:出发前一夜来个压哨的寒假实践项目,哈哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值