C/Visual C - sqrt!

 
Vista:

sqrt!

Publicado por Mostruo (1 intervención) el 31/03/2001 02:18:57
Estoy empezando a programar en C++ y no se porque, despues de que me compila y me hace el build, cuando ejecuto el archivo exe me da el error de dominio cuando, supongo, ejecuta la función sqrt. El programa que intento no es nada del otro mundo pero me he atrancado, una ayuda por favor. El código es:

#include <iostream.h>
#include <math.h>

int main()
{

double a,b,c,d,e;

cout << "Introduce coeficientes a,b,c \ nde la ecuacion de segundo grado.\n";
cin >> a;
cin >> b;
cin >> c;
d=b*b-4*a*c;
e=sqrt(d);

if (d<0) {
cout << "x1: " << b*(-1)/(2*a) << "+i*" << e/(2*a) << endl;
cout << "x2: " << b*(-1)/(2*a) << "-i*" << e/(2*a) << endl;
}

if (d>0) {
cout << "x1: " << (b*(-1)+e)/(2*a) << endl;
cout << "x2: " << (b*(-1)-e)/(2*a) << endl;
}

if (d==0)
cout << "x1,x2: " << b*(-1)/(2*a);

return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:sqrt!

Publicado por José Luis (106 intervenciones) el 31/03/2001 07:24:48
Hola
Primero debes saber que la función sqrt no prevee por si sola errores de dominio, asi que el que debe preveerlos eres tu.

Esto lo digo por que en la siguiente linea:

e=sqrt(d);

No prevees que d sea negativo, por lo tanto la funcion sqrt arroja un error por la salida estandar de errores y aborta el programa.

Hay varias formas de corregir esto, pero la mas fácil es, tomar el valor absoluto de d:

e=sqrt( fabs(d) );

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar