#include<stdio.h>
void function(int);
int main()
{
int x;
printf("Enter x:");
scanf("%d", &x);
function(x);
return 0;
}
void function(int x)
{
float fx;
fx=10/x;
if(10 is divided by zero)// I dont know what to put here please help
printf("division by zero is not allowed");
else
printf("f(x) is: %.5f",fx);
}
ответ
#include<stdio.h>
void function(int);
int main()
{
int x;
printf("Enter x:");
scanf("%d", &x);
function(x);
return 0;
}
void function(int x)
{
float fx;
if(x==0) // Simple!
printf("division by zero is not allowed");
else
fx=10/x;
printf("f(x) is: %.5f",fx);
}
Это должно быть сделано. Перед выполнением деления необходимо проверить деление на ноль.
void function(int x)
{
float fx;
if(x == 0) {
printf("division by zero is not allowed");
} else {
fx = 10/x;
printf("f(x) is: %.5f",fx);
}
}
С C99 вы можете использовать fetestexcept(2)
ЕТ частности.
По умолчанию в UNIX деление с плавающей запятой на ноль не останавливает программу с исключением. Вместо этого он производит результат, который равен infinity
или NaN
. Вы можете проверить, что ни один из них не произошел с использованием isfinite
.
x = y/z; // assuming y or z is floating-point
if (! isfinite(x)) cerr << "invalid result from division" << endl;
В качестве альтернативы, вы можете проверить, что делитель не равен нулю:
if (z == 0 || ! isfinite(z)) cerr << "invalid divisor to division" << endl;
x = y/z;
Это не деление с плавающей запятой на ноль, хотя - целое число (результат выражения целочисленного деления затем возвращается к поплавке). –
@Paul: Это верно в его коде, но я не копировал его код. Я добавил комментарий, помогает ли это? – Potatoswatter
Это только для чисел с плавающей точкой исключения, хотя? Приведенный выше пример - для целочисленного деления на ноль. –