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

} 

ответ

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

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

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

С C99 вы можете использовать fetestexcept(2) ЕТ частности.

+0

Это только для чисел с плавающей точкой исключения, хотя? Приведенный выше пример - для целочисленного деления на ноль. –

4

По умолчанию в UNIX деление с плавающей запятой на ноль не останавливает программу с исключением. Вместо этого он производит результат, который равен infinity или 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; 
+0

Это не деление с плавающей запятой на ноль, хотя - целое число (результат выражения целочисленного деления затем возвращается к поплавке). –

+0

@Paul: Это верно в его коде, но я не копировал его код. Я добавил комментарий, помогает ли это? – Potatoswatter

 Смежные вопросы

  • Нет связанных вопросов^_^