美文网首页
hdoj关于g++上precision的wa----hdoj20

hdoj关于g++上precision的wa----hdoj20

作者: 单林敏 | 来源:发表于2019-01-05 17:05 被阅读0次

2019年1月5日16:54:31

今天学弟让我看他的hdoj2023的code,然后我很快改完了,但是在hdoj上提交就是一直wa,本来100%AC率被这一题搞的惨不忍睹(当然追求真本领更重要)(内心os:为啥不给看错误样例!?)

然后自己debug,找blog,发现大家都没有说到我要的点,大家确实都AC了,有的人也说了自己wa了好多次,后面发现什么
1.每组数据间要多加空行什么的

但我的wa点居然是 g++平台编译的precision和c++编译的不一样!

#include<iostream>
#include<iomanip>
using namespace std;
int main(){
    int n,m;
    while(cin>>n>>m&&n&&m){
        int **p=new int*[n];
        for(int i=0;i<n;i++)
            p[i]=new int[m];
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
                cin>>p[i][j];                       //创建二维数组并赋值
        for(int i=0;i<n;i++){
            double sum=0;
            for(int j=0;j<m;j++){
                sum+=p[i][j];
            }                                       //计算每个同学的总成绩
            if(i==0){
                cout<<fixed<<setprecision(2);
                cout<<sum/m;
            }
            else{
                cout<<fixed<<setprecision(2);
                cout<<" "<<sum/m;                   //输出每个同学的平均分
            }
        }
        cout<<endl;
        double *aver=new double[m];
        for(int i=0;i<m;i++){
            double sum=0;
            for(int j=0;j<n;j++){
                // sum+=p[i][j];    // 这里行列反了
                sum+=p[j][i];
            }                                       //计算各科成绩的总分
            if(i==0){
                cout<<fixed<<setprecision(2);
                cout<<sum/n;
                aver[i]=sum/n;
            }
            else{
                cout<<fixed<<setprecision(2);
                cout<<" "<<sum/n;
                aver[i]=sum/n;
            }                                       //输出各科成绩平均分
        }
        cout<<endl;
        int num=0;
        for(int i=0;i<n;i++){
            bool flag=false;
            for(int j=0;j<m;j++){
                // if(p[i][j]>aver[j])  大于等于
                if(p[i][j]>=aver[j])
                    flag=true;
                else{
                    flag=false;
                    break;
                }
            }
            if(flag)
                num++;
        }                                           //查找各科成绩均超过平均分的同学
        // cout<<num<<"\n"<<endl;//两个回车
        printf("%d\n\n",num);//两个回车
        // for(int i=0;i<m;i++)
        for(int i=0;i<n;i++)
            delete []p[i];
        delete []p;                                 //释放二维数组
        delete aver;
    }
    return 0;
}

这个code在hdoj只能通过c++方式提交才给过,用一般常用的g++过不了

想用g++提交的话,千万别用precision!用printf!
总而言之,浮点数还是printf好啊,简洁!
附上g++用printf版的

#include<iostream>
#include<iomanip>
using namespace std;
int p[55][7];
double aver[7];
int main(){
    int n,m;
    while(cin>>n>>m&&n&&m){
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
                cin>>p[i][j];                       //创建二维数组并赋值
        for(int i=0;i<n;i++){
            double sum=0;
            for(int j=0;j<m;j++){
                sum+=p[i][j];
            }                                       //计算每个同学的总成绩
            if(i==0){
                printf("%.2lf",sum/m );
            }
            else{
                printf(" %.2lf",sum/m );
            }
        }
        cout<<endl;
        for(int i=0;i<m;i++){
            double sum=0;
            for(int j=0;j<n;j++){
                sum+=p[j][i];
            }                                       //计算各科成绩的总分
            if(i==0){
                aver[i]=sum/n;
                printf("%.2lf",aver[i] );
            }
            else{
                // cout<<fixed<<setprecision(2);
                // cout<<" "<<sum/(n*1.0);
                aver[i]=sum/(n*1.0);
                printf(" %.2lf",aver[i] );
            }                                       //输出各科成绩平均分
        }
        cout<<endl;
        int num=0;
        for(int i=0;i<n;i++){
            bool flag=1;
            for(int j=0;j<m;j++){
                if(p[i][j]<aver[j]){
                    flag=0;
                    break;
                }
            }
            if(flag)
                num++;
        }                                           //查找各科成绩均超过平均分的同学
        printf("%d\n\n",num);//两个回车
    }
    return 0;
}

相关文章

网友评论

      本文标题:hdoj关于g++上precision的wa----hdoj20

      本文链接:https://www.haomeiwen.com/subject/kwqdrqtx.html