Autor Tema: Dilema con 1/0 aveces retorna inf otras se bloquea  (Leído 2548 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado CompSystems

  • PIC18
  • ****
  • Mensajes: 488
    • Home Page
Dilema con 1/0 aveces retorna inf otras se bloquea
« en: 10 de Diciembre de 2014, 03:59:54 »
Hola el siguiente código es una función que calcula el seno inverso o arcoseno de un numero decimal dado en radianes.

Si el numero de entrada es un radian entonces la función en cierta parte se hace 1/0 y muestra la palabra inf

Código: C++
  1. cociente = x/denominador;


 y calcula bien el arcotangente de infinito.

Pero si yo escribo 1/0 directamente el compilador se bloquea, por que sucede esto?.

Código: C++
  1. float cociente = 0;
  2. cout << 5/cociente << endl;

probado con CODEBLOCKS


Código: C++
  1. #include<iostream>
  2. #include<cmath>
  3. using namespace std;
  4.  
  5. float arcsin(float x);
  6. int main() {
  7.         //float cociente = 0;
  8.         //cout << 5/cociente << endl;
  9.  
  10.         cout << "arcsin(0.8)=" << arcsin(0.8) << endl; // 0.927295
  11.         cout << endl;
  12.         cout << "arcsin(1)=" << arcsin(1) << endl;
  13.         cout << endl;
  14.         cout << "arcsin(1.1)=" << arcsin(1.1) << endl; // 1.5708
  15.         return 0;
  16. }
  17.  
  18. float arcsin(float x) {
  19.         float arcsin_=0;
  20.         float cociente, denominador;
  21.         if (x<=1 && x>=-1) {
  22.                 denominador = sqrtf(1-(x*x));
  23.                 cout << "denominador = " << denominador << endl;
  24.                 cociente = x/denominador;
  25.                 cout << "cociente = " << x << "/" << denominador << " = " << cociente << endl;
  26.                 arcsin_ = atan(cociente);
  27.  
  28.         } else {
  29.                 cout << "Domain Error" << endl;
  30.                 // kill
  31.         }
  32.         return arcsin_;
  33.  
  34. }

PD: despues de la sentencia cout << "Domain Error" << endl; deseo que se termine el programa cual es el commando o instruccion para esto?

Gracias
« Última modificación: 10 de Diciembre de 2014, 04:07:12 por CompSystems »
Desde Colombia

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Dilema con 1/0 aveces retorna inf otras se bloquea
« Respuesta #1 en: 10 de Diciembre de 2014, 11:29:15 »
Por lo que encontre por internet el arcsin() realiza su operacion mediante series de tailor



Por lo que obviamente no vas a tener una division por 0 como estas haciendo, Imagino que a cierta cantidad mostrara inf. La division por 0 no esta permitida y es por esto que se bloquea o te tirar error.

Citar
PD: despues de la sentencia cout << "Domain Error" << endl; deseo que se termine el programa cual es el commando o instruccion para esto?

Buscando por internet nuevamente:
http://stackoverflow.com/questions/13667364/exit-failure-vs-exit1

Pero en fin creo que el comando que estas buscando es exit(N); donde N es 0 para algo que fue bien EXIT_SUCCESS, o 1 para algo que fue mal EXIT_FAILURE.
Es lo unico que encontre