あなたは0
で割ります。 num
は、入力に使用する変数です。知られていない理由のために、あなたはそれを最後に分けます。
ハンドラが呼び出された回数を示すカウンタがあります。アンケートに回答した回数を別のカウンターを追加して、メインループでそれを増やします。このような
何か:
int noHandlerCalls=0; // Because good variable names is good
void handler(int sig){
noHandlerCalls++;
...
}
int main()
{
...
int noSurveyAnswers=0;
while (num != 0) {
if (num == 5)
signal(SIGUSR1, handler);
signal(SIGALRM, SIG_IGN);
alarm(2);
printf("Enter a number\n");
signal(SIGALRM, handler);
scanf("%d", &num);
noSurveyAnswers++;
}
...
printf("percent: %f", (100.0*noHandlerCalls)/noSurveyAnswers);
そして、ところで。投稿する前に、このガイドに従うことが良いでしょうどこの良い例です。https://stackoverflow.com/help/mcve
あなたがした場合は、あなたの質問にだけ、このコードが含まれます:
int count = 0;
int num;
float per;
int main()
{
num = 0;
per = (count/num) *100;
printf("percent: %f", per);
}
これはかなりその可能な最小のコードでありますあなたが尋ねたエラーを再現しています。その段階では、おそらく自分で考え出したでしょう。 :)
'(count/num)* 100'を' 100.0f * count/num'に置き換えました –
これは次のように出力します:調査を完了していただきありがとうございます。ハンドラは2回呼び出されました パーセント:inf –
もちろん '' inf "'。ヒント: 'num'の使用法を確認してください。 – chux