7
votes

Comment vérifier s'il y a une division par zéro en 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);

}

0 commentaires

4 Réponses :


6
votes

Cela devrait le faire. Vous devez vérifier la division par zéro avant d'effectuer la division.

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


0 commentaires

8
votes
#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);

}

0 commentaires


4
votes

Par défaut dans UNIX, la division de points flottants par zéro n'arrête pas le programme avec une exception. Au lieu de cela, il produit un résultat qui est infini code> ou nan code>. Vous pouvez vérifier qu'aucun de ceux-ci n'est arrivé à l'aide de isminite code>. xxx pré>

alternativement, vous pouvez vérifier que le diviseur n'est pas zéro: p>

if ( z == 0 || ! isfinite( z ) ) cerr << "invalid divisor to division" << endl;
x = y / z;


2 commentaires

Ce n'est pas un point de division de point flottant par zéro mais il est entier (le résultat de l'expression de la division entière est de la suite à un flotteur par la suite).


@Paul: C'est vrai dans son code, mais je n'ai pas reproduit son code. J'ai ajouté un commentaire, cela aide-t-il?