20分,求助,实在想不出哪错了

B2095 白细胞计数

Walker_L @ 2024-03-01 12:31:32


by Walker_L @ 2024-03-01 12:31:53

#include<iostream>
#include<cmath>
using namespace std;
double a[303];
int main() {
    int n;
    //mave是误差最大值
    double min, max = 0,sum=0,ave,mave=0;
    cin >> n;
    //找最大
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        if (a[i] > max)
            max = a[i];
    }
    //找最小
    min = a[0];
    for (int i = 0; i < n; i++)
    {
        if (a[i]<min)
        {
            min = a[i];
        }
    }
    //除去最大最小的和
    for (int i = 0; i < n; i++)
    {
        if (a[i]==max||a[i]==min)
        {
            continue;
        }
        sum += a[i];
    }
    ave = sum / (n - 2);
    //求误差最大值
    for (int i = 0; i < n; i++)
    {
        if (a[i] != max && a[i] != min)
        {
            if (fabs(a[i] - ave) > mave)
            {
                mave = fabs(a[i] - ave);
            }
        }

    }
    printf("%.2lf %.2lf", ave, mave);
    return 0;
}

by 杜都督 @ 2024-03-01 13:41:09

顺着你的思路做了简单修改:

#include<iostream>
#include<cmath>
using namespace std;
double a[303];
int main() {
    int n;
    //mave是误差最大值
    double min, max = 0,sum=0,ave,mave=0;
    int minI = 0, maxI;
    cin >> n;
    //找最大
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        if (a[i] > max)
        {
            max = a[i];
            maxI = i;
        }
    }
    //找最小
    min = a[0];
    for (int i = 0; i < n; i++)
    {
        if (a[i]<min)
        {
            min = a[i];
            minI = i;
        }
    }
    //除去最大最小的和
    for (int i = 0; i < n; i++)
    {
        if (i==maxI||i==minI)
        {
            continue;
        }
        sum += a[i];
    }
    ave = sum / (n - 2);
    //求误差最大值
    for (int i = 0; i < n; i++)
    {
        if (i != maxI && i != minI)
        {
            if (fabs(a[i] - ave) > mave)
            {
                mave = fabs(a[i] - ave);
            }
        }

    }
    printf("%.2lf %.2lf", ave, mave);
    return 0;
}

想想为什么

@Walker_L


by Walker_L @ 2024-03-01 15:12:24

@杜都督 谢谢了,发现了,这道题和上一道不一样,存在多个相同的最大最小值情况,题目只需要分别删除一个最值。


by 杜都督 @ 2024-03-01 16:03:12

@Walker_L 没错


|