UVA 10137 - The Trip(旅行)

题目链接地址  10137 - The Trip

/*
* 10137 - The Trip
* 作者 仪冰
* 语言 C++
* QQ 974817955
*
* 精度处理一小弄。n个学生,每个学生有一个花费,
* 求出平均值,求小于平均值的总和(less),
* 求出大于平均值的总和(greatly),最后再进行less和grealy比较,输出最大的。
*/

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

const int SIZE = 1000;

const double EXP = 1e-8;

int main()
{
    int nStudents = 0;             //学生总数
    double everyStudentCost[SIZE]; //存储每个学生的花费
    double totalCost = 0.0;        //花费总数
    double average = 0.0;          //平均值
    double less = 0.0;             //少于平均值
    double greatly = 0.0;          //多于平均值

    while (cin >> nStudents)
    {
        if (nStudents == 0)
        {
            break;
        }

        //初始化
        totalCost = 0.0;
        average = 0.0;
        less = 0.0;
        greatly = 0.0;

        //输入
        for (int i=0; i<nStudents; i++)
        {
            cin >> everyStudentCost[i];
        }

        //求总花费
        for (int i=0; i<nStudents; i++)
        {
            totalCost += everyStudentCost[i];
        }

        //求平均值
        average = totalCost / nStudents;

        //求less和greatly的值
        for (int i=0; i<nStudents; i++)
        {
            if (everyStudentCost[i] < average)
            {
                //精度处理,保留两位小数。先乘以100取其整数部分,然后再除以100.00
                less += ((int)(100*(average - everyStudentCost[i])) / 100.00);
            }
            else
            {
                greatly += ((int)(100*(everyStudentCost[i] - average)) / 100.00);
            }
        }

        //求出less和greatly中的最小值
        if (less > greatly)
        {
            cout.precision(2);
            cout.setf(ios::fixed | ios::showpoint);
            cout << "$" << less << endl;
        }
        else
        {
            cout.precision(2);
            cout.setf(ios::fixed | ios::showpoint);
            cout << "$" << greatly << endl;
        }
    }

    return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值