码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-03-05 14:56:20      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:c++   大一练习   

问题及代码:

/*
 *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;
}

运行结果:

技术分享

技术分享

知识点总结:

成绩保存到文档

学习心得:

好好学习 天天向上

感谢党和国家领导人




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

标签:c++   大一练习   

原文地址:http://blog.csdn.net/ljd939952281/article/details/44080919

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!