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

} 

Respuesta

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

Esto debería hacerlo. Debe verificar la división por cero antes de realizar la división.

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

Con C99 puede utilizar fetestexcept(2) et alia.

+0

eso es sólo para las excepciones de punto flotante sin embargo? El ejemplo anterior es para un entero dividido por cero. –

4

Por defecto en UNIX, la división de punto flotante por cero no detiene el programa con una excepción. En cambio, produce un resultado que es infinity o NaN. Puede verificar que ninguno de estos ocurrió usando isfinite.

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

Alternativamente, se puede comprobar que el divisor no es cero:

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

Aunque no es un punto flotante dividido por cero, es un número entero (el resultado de la expresión de la división entera se convierte luego en un flotante). –

+0

@Paul: Eso es cierto en su código, pero no he replicado su código. Agregué un comentario, ¿eso ayuda? – Potatoswatter

Cuestiones relacionadas