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

}
7
задан Aziz Shaikh 1 October 2012 в 09:45
поделиться

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);

}
8
ответ дан 6 December 2019 в 09:59
поделиться

По умолчанию в UNIX деление с плавающей запятой на ноль не останавливает программу за исключением. Вместо этого он дает результат бесконечность или 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;
4
ответ дан 6 December 2019 в 09:59
поделиться

Это должно сделать это. Перед выполнением деления необходимо проверить деление на ноль.

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);
    }
}
6
ответ дан 6 December 2019 в 09:59
поделиться

С C99 вы можете использовать fetestexcept (2) et alia.

1
ответ дан 6 December 2019 в 09:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: