在c中计算标准偏差时得到inf

时间:2018-02-14 04:24:25

标签: c loops floating-point do-while standard-deviation

尝试在c中编写一个可以输入大量数字的程序。即/*This code moves the variables x and y around the outside of a square counterclockwise starting from the origin.*/ for(y=0,x=0,x<width;x++); for(,y<width;y++); for(,x>0;x--); for(,y>0;y--); ,并返回大小,最大值,最小值,平均值和标准差。

在计算[ for(y=0,x=0,x<width;x++), for(,y<width;y++), for(,x>0;x--), for(,y>0;y--) ] { //Do something over the perimeter of the square E.g. color in a pixel } (第51行)时尝试计算标准差时,它开始返回inf。 不知道为什么我会通过添加功能获得inf。

我有所有的打印方法来尝试识别它的中断位置。

1, 2, 3, 4

1 个答案:

答案 0 :(得分:2)

您初始化

 int counter = 0;

并在你的第一个循环中执行

 average = (float)(sum/counter);    // In the first loop count is zero, i.e. divide by zero
 counter++;

所以你除以零,这导致inf

只需切换如下行:

 counter++;
 average = (float)(sum/counter);