首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

从文件中读出数据,统计各个浮点数出现的次数。统计结果一半正确,一半异常。请高手帮忙看看

2012-02-22 
从文件中读出数据,统计各个浮点数出现的次数。统计结果一半正确,一半错误。请高手帮忙看看! 数据是从24.83开

从文件中读出数据,统计各个浮点数出现的次数。统计结果一半正确,一半错误。请高手帮忙看看!

数据是从24.83开始到25.23结束的20个浮点数。统计结果从24.83到25.02是正确的,但是后面的结果就错了。  

void   main()  
{  
fstream   fMyfile;  
float   avertemp[500];   //保存从文件中读取的数据
int   n;  
float   d1,max,min;  
int   result[80];   //保存结果


fMyfile.open( "C:\\result2.txt ",ios::in);   //打开文件
if(!fMyfile){cout < < "error ";  
exit(-1);}  

memset(result,0,80);  

min=100;  
max=0;  

for(int   i=0;i <20;i++)   //读取数据,得到最大数和最小数
{  
      fMyfile> > avertemp[i];  

      if(avertemp[i]> max)  
          {max=avertemp[i];}  

      if(avertemp[i] <min)  
          {min=avertemp[i];}  

}  
fMyfile.close   ();  

for(int   k=0;k <20;k++)  
{  
      n=0;   //计数器

      for(float   d=min;   d <=max+0.01;d=d+0.01)  
          {  
              if((avertemp[k]-d)> =-0.00001   &&   (avertemp[k]-d) <=0.00001)   //统计浮点数
                {   result[n]=result[n]   +1;}  
                      n++;  
            }  
}  

//显示结果

d1=int((max+0.01-min)*100);  

for(int   j=0;j <=d1;j++)  
{  
cout < <min < < "= " < <result[j] < <endl;  
min=min+0.01;  
}  

}


[解决办法]
你是不是少读了一半的数据?
[解决办法]
memset(result,0,80*sizeof(int));

热点排行