2011-10-15 16 views
-3

次のコードで浮動小数点例外が発生しています。cプログラムの浮動小数点例外

int heavy_decimal_count (int A, int B)   
{   
char * markup = "Heavy";  
int i , value; 
int tempA = A; 
int tempB = B;  
int reminder = 0;  
int sum = 0;  
float average = 0.00;  
int counter = 0;  
if((tempA < 0) || (tempB <0)||(B < A))  
{  
    printf(" Error -> Numbers are negative or B is less than A");  
    return 0;  
}  
for ( i = A ; i <= B ; i++)  
{  
    value = i;  
    while(value > 0)  
    {  
     printf(" the value is %d ", value);  
     counter += counter;  
     reminder = value % 10;  
     value /= 10;  
     sum += reminder;  
     average = sum/counter ;  

    }  
    if(average > 7.0)  
      printf(" %d \t avg= %f\t %s\t" ,i , average , markup); 
     else  
      printf(" %d \t avg=%f\t " ,i , average);  
}  
return 0;  
}  
+1

デバッガを使用して、少なくともどこで発生するのか把握してください。 – zneak

答えて

6

は名前にもかかわらず、「浮動小数点例外は、」実際に起きたとき/または%0による整数。まだ0ある

average = sum/counter ; 

counterので:私の推測では、それはここに起こっていることです。私はあなたが、あなたはそれが端数値ではなく整数として発生する可能性が

average = (float)sum/counter ; 

に分裂を変更する場合があり、また

counter += 1; 

する

counter += counter; 

を意味だと思います。

+0

ええ、私は愚かな間違いをしたと思います。指摘してくれてありがとう。 – samprat

1

あなたが次の行

平均=合計/カウンタにゼロ除算されているように見えます。

カウンタは、最初はゼロとして定義されています。

int counter = 0;

ここで更新されました。

counter + = counter; //カウンタはゼロのままです....

代わりにカウンタを1つ更新することを意味しましたか?例えば

counter + = 1;

関連する問題