2010-03-21 4 views
7
#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); 

} 

Répondre

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

} 
6

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

Avec C99, vous pouvez utiliser fetestexcept(2) et autres.

+0

C'est seulement pour flotter des exceptions ponctuelles bien? L'exemple ci-dessus est pour une division entière par zéro. –

4

Par défaut dans UNIX, la division en virgule flottante par zéro n'arrête pas le programme avec une exception. Au lieu de cela, il produit un résultat qui est infinity ou NaN. Vous pouvez vérifier qu'aucun de ces événements ne s'est produit en utilisant isfinite.

x = y/z; // assuming y or z is floating-point 
if (! isfinite(x)) cerr << "invalid result from division" << endl; 

Alternativement, vous pouvez vérifier que le diviseur est non nul:

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

Ce n'est pas un diviseur à virgule flottante par zéro - c'est un entier (le résultat de l'expression de division entière est ensuite converti en un flottant). –

+0

@Paul: C'est vrai dans son code, mais je n'ai pas répliqué son code. J'ai ajouté un commentaire, est-ce que ça aide? – Potatoswatter

Questions connexes