как проверить, есть ли деление на ноль в c
#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);
}
4 ответа:
#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); } }
По умолчанию в 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;
С C99 вы можете использовать
fetestexcept(2)
et alia.