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

c++问题

huangyu0 发布于 2009-09-29 21:33, 284 次点击
有一程序:
统计评分 。统计处最高分 最低分 以及排除最高分最低分之后算出平均分、、
请教各位大大要怎么写?。。
请给个思路 比如说要调用几个函数==的、、
拜托了 谢谢。
2 回复
#2
flyingcloude2009-09-30 19:26
可以构造一个类,
类中有一个数组存放所有输入的分数
int count,first,last,aver分别存放分数的个数,最高分,最低分,平均分
再定义一个读取函数,用于从键盘读取数据
           一个计算最高分的函数
           一个计算最低分的函数
           一个计算平均分的函数


可以参考下面的代码:
#include<iostream>
using namespace std;
class mark
{
public:
    mark();
    void read();
    void print();
    int getFirst();
    int getLast();
    double getAver()const;
    void average();
private:
    int count;
    int *array;
    int first;
    int last;
    double aver;
};
mark::mark():count(0),first(0),last(0),aver(0){}
void mark::read()
{
    cout<<"请输入分数的个数:";
    cin>>count;
    array = new int[count];
    for(int i=0;i<count;i++)
        cin>>array[i];
}
void mark::print()
{
    cout<<"最高分为: "<<getFirst()<<'\n';
    cout<<"最低分为: "<<getLast()<<'\n';
    cout<<"平均分为: "<<getAver()<<'\n';
}
int mark::getFirst()
{
    int max=0;
    for(int i=0;i<count;i++)
        if(array[i]>max)
            max=array[i];
    first = max;
    return first;
}
int mark::getLast()
{
    int min=10000;
    for(int i=0;i<count;i++)
        if(array[i]<min)
            min =array[i];
    last = min;
    return last;
}
double mark::getAver()const
{
    return aver;
}
void mark::average()
{
    int sum =0;
    for(int i=0;i<count;i++)
        sum+=array[i];
    sum= sum - getFirst() - getLast();
    aver = sum *1.0/(count-2);
}
main(void)
{
    mark m;
    m.read();
    m.average();
    m.print();
}

#3
jolixiaoai2009-10-02 15:11
呃……其实想法差不多。
不过你还可以选择先将数组里的元素排序,总分再去掉头尾分数就可以算平均分
当然,还要考虑最低、最高重分的情况哈
1