使用文件读取数据和写入文件时,我无法获得正确的答案,但是当我调试时,它很好用

When using file to read data and writing file, I can't attain the correct anwser, but when I debug, it works nice

这是关于使用回归分析预测房价。 问题的主要是,当我在代码末尾设置断点时,我可以看到答案,但是当我 运行 它时,它 returns 错误代码。 我改变了读取文件的方式,但效果不佳。 请指出我的错误。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
struct Data{
    double feature[15];//特征值的数据
};
Data data[520];
struct Connct{
    double connect;//和最后房价的相关性
    int id;
}link[13];
double weight[15];//对应特征值的权重
//每个特征值对应的求和---对每个特征值用最小二乘法
double sumX[15];
double sumXY[15];
double sumXX[15];
double sumY=0.00;
double sumY2=0.00;
double besides=0.00;
int cmp(Connct x,Connct y){//返回较大的关联值
    return x.connect>=y.connect;
}
int main(){
    freopen("house.txt","r",stdin);
    //freopen("123.txt","w",stdout);

    for(int i=0;i<506;i++){
        for(int j=0;j<14;j++){
            scanf("%lf",&data[i].feature[j]);
        }
    }
    preprocess();//归一化处理
    //求和
    for(int i=0;i<506;i++){
        for(int j=0;j<13;j++){
            sumX[j]+=data[i].feature[j];
            sumXX[j]=sumXX[j]+data[i].feature[j]*data[i].feature[j];
            sumXY[j]=sumXY[j]+data[i].feature[j]*data[i].feature[13];
        }
        sumY+=data[i].feature[13];
        sumY2=sumY2+data[i].feature[13]*data[i].feature[13];
    }
    //对每一维度使用最小二乘法,计算出权重计算相关性
    for(int i=0;i<13;i++){
        weight[i]=(sumXY[i]-sumX[i]*sumY/506)/(sumXX[i]-sumXX[i]/506);
        link[i].connect=(506*sumXY[i]-sumX[i]*sumY)/(sqrt(506*sumXX[i]-sumX[i]*sumX[i])*sqrt(506*sumY2-sumY*sumY));
        link[i].id=i;
    }
    //找出最相关的三个因素
    sort(link,link+13,cmp);
    //处理,计算出偏置
    for(int i=0;i<3;i++){
        besides+=weight[link[i].id]*sumX[link[i].id];
        printf("%lf ",weight[link[i].id]);
    }
    besides=(sumY-besides)/506;
    printf("\n%lf",besides);
    return 0;
}

已经通过删除freopen.After的功能解决了我删除了,调试的答案与运行相同。也许freopen有一些我不知道的秘密用法。