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

} 

Odpowiedz

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

To powinno wystarczyć. Przed dzieleniem musisz sprawdzić podział na zero.

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

Z C99 można użyć fetestexcept(2) et innymi.

+0

To tylko dla pływających wyjątki punktowych chociaż? Powyższy przykład dotyczy dzielenia liczby całkowitej przez zero. –

4

Domyślnie w systemie UNIX dzielenie zmiennoprzecinkowe przez zero nie zatrzymuje programu z wyjątkiem. Zamiast tego daje wynik, który jest infinity lub NaN. Możesz sprawdzić, czy żadne z nich nie miało miejsca przy użyciu isfinite.

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

Alternatywnie, można sprawdzić, że dzielnik zera nie jest:

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

Nie jest to jednak dzielenie zmiennoprzecinkowe przez zero - jest to liczba całkowita (wynik wyrażenia dzielenia całkowitoliczbowego jest następnie rzutowany na zmienną). –

+0

@Paul: To prawda w jego kodzie, ale nie zreplikowałem jego kodu. Dodałem komentarz, czy to pomaga? – Potatoswatter

Powiązane problemy