看不出来哪里有问题,求助大佬

B2095 白细胞计数

Hanlone556 @ 2024-01-31 13:09:04


#include <iostream>
#include <iomanip>
using namespace std;
int main(){
    int n;
    double a[301];

    cin >> n;

    for(int i=0;i<n;i++){
        cin >> a[i];
    }

    for(int i=0;i<n-1;i++){
        for(int j=0;j<i-n-1;j++){
            if(a[j]>a[j+1]){
                double temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }   
        }
    }

    double sum=0.00;
    for(int i=0;i<n;i++){
        sum+=a[i];
    }

    double ave=(sum-a[0]-a[n-1])/(n-2);
    cout << fixed << setprecision(2) << ave << " "; 

    double x=ave-a[1];
    double y=a[n-2]-ave;
    if(x>=y) cout << x << endl;
    if(x<y) cout << y << endl;

    return 0;
}

by tghr0503 @ 2024-01-31 13:34:47

你的排序有问题,换成sort就过了


by Jason_Ming @ 2024-01-31 13:36:15

1、排序的内层循环终止条件应为: j<n-i-1 2、x和y在计算时应取绝对值,可以使用abs()函数,包含在 cmath 库中


by Jason_Ming @ 2024-01-31 13:40:18

abs(1)=1 abs(2.333)=2.333 abs(0)=0 abs(-114514)=114514 abs(-3.1415926)=3.1415926


by Hanlone556 @ 2024-01-31 14:24:56

@Jason_Ming 感谢回复!想问一下我这么写不能确保x,y都为正数吗?


by Hanlone556 @ 2024-01-31 14:26:24

@tghr0503 多谢!没有用sort是因为还没学到


by Jason_Ming @ 2024-01-31 14:47:32

@Hanlone556 其实……好像……可以确保(不好意思刚才脑抽了)(ㄒoㄒ)


by Hanlone556 @ 2024-01-31 14:56:32

@Jason_Ming 通过了,多谢!


|