注册 登录
编程论坛 C++教室

去掉最大值和最小值该怎么办

梓薰 发布于 2014-06-04 01:40, 699 次点击
#include <iostream>
#include<string>
using namespace std;
struct Student
{
    char namescore[3][5];
}stu;
int main()
{
    string a;
    Student stu[3];
    int i,j;
    float average,t;
    float score[15];
    int n,sum,max,min;
    max=0;
    min=0;
    sum=0;
    for(i=1;i<=3;i++)
    {
        cout<<"Competitor"<<i<<":";
        cin>>a;
        for(j=1;j<=5;j++)
        {
            cout<<"Jury"<<j<<"'s score:";
            cin>>score[j];
            cout<<endl;
        }
    }
    for(i=1;i<=3;i++)
    {
        for(j=1;j<=5;j++)
        {
        
            if(score[j]>max)
            {
                max=score[j];
            }
            if(score[j]<min)
            {
                min=score[j];
            }
            sum+=score[j];
        }
        }
   
    return 0;
}
这个程序代码只是能够输入人名以及成绩 ,想要在输入成绩之后每一位选手去掉最高分和最低分求平均值怎么办
7 回复
#2
TonyDeng2014-06-04 02:38
又是學過C之後來碰C++的?一看那個結構定義就知道這程序毀了,人也差不多毀了。
#3
梓薰2014-06-04 08:27
回复 楼主 梓薰
你猜错了 没学过c  但是人毁了是真的
#4
rjsp2014-06-04 09:12
程序代码:
#include <iostream>
#include <string>

struct Student
{
    std::string name;
    float scores[5];
    float avg;
};

using namespace std;

int main()
{
    Student stu[3];

    const size_t stu_cnt = sizeof(stu)/sizeof(stu[0]);
    const size_t scr_cnt = sizeof(stu[0].scores)/sizeof(stu[0].scores[0]);

    for( size_t i=0; i!=stu_cnt; ++i )
    {
        cout << "Competitor" << (i+1) << ": ";
        cin >> stu[i].name;
        for( size_t j=0; j!=scr_cnt; ++j )
        {
            cout << "Jury" << (j+1) << "'s score: ";
            cin >> stu[i].scores[j];
        }
    }

    for( size_t i=0; i!=stu_cnt; ++i )
    {
        float maxval = stu[i].scores[0];
        float minval = stu[i].scores[0];
        float sumval = stu[i].scores[0];

        for( size_t j=1; j!=scr_cnt; ++j )
        {
            if( stu[i].scores[j] < minval )
                minval = stu[i].scores[j];
            if( stu[i].scores[j] > maxval )
                maxval = stu[i].scores[j];
            sumval += stu[i].scores[j];
        }

        stu[i].avg = (sumval-maxval-minval)/(scr_cnt-2);

        cout << stu[i].name << " : " << stu[i].avg << endl;
    }

    return 0;
}
#5
rjsp2014-06-04 09:12
例子:

Competitor1: foo
Jury1's score: 5
Jury2's score: 4
Jury3's score: 3
Jury4's score: 2
Jury5's score: 1
Competitor2: bar
Jury1's score: 1
Jury2's score: 2
Jury3's score: 3
Jury4's score: 4
Jury5's score: 5
Competitor3: baz
Jury1's score: 2
Jury2's score: 1
Jury3's score: 3
Jury4's score: 5
Jury5's score: 4
foo : 3
bar : 3
baz : 3
#6
梓薰2014-06-04 09:39
回复 4 楼 rjsp
帅呆了  万分感谢  
#7
gobraves2014-06-04 14:50
回复 4 楼 rjsp
这代码写得好漂亮
#8
梓薰2014-06-04 16:58
回复 4 楼 rjsp
const size_t stu_cnt = sizeof(stu)/sizeof(stu[0]);
    const size_t scr_cnt = sizeof(stu[0].scores)/sizeof(stu[0].scores[0]);
这两行是干啥用的呀  没看懂~~~(原谅我是个学渣渣)我把所有的stu_cnt改成了3   scr_cnt改成了5也对
1