как проверить, есть ли деление на ноль в 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 7

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.