Hola a todos ::) ::), bueno soy nuevo en esto de la programación y en linux, mi duda es cuando ejecuto mi programa el resultado que me da es -nan que es eso :huh: :huh: y a que se debe ese resultado :huh: :huh: :huh:
mi programa es:
#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c,res1,res2;
printf("Introduce los valores de a,b,c\n");
printf("Valor de A ==> ");scanf("%f",&a);while(getchar()!='\n');
printf("Valor de B ==> ");scanf("%f",&b);while(getchar()!='\n');
printf("Valor de C ==> ");scanf("%f",&c);while(getchar()!='\n');
res1 = (-b+sqrt(b*b-4*a*c))/(2*a);
res2 = (-b-sqrt(b*b-4*a*c))/(2*a);
printf("Positivo %f\n",res1);
printf("Negativo %f\n",res2);
return 0;
}
y el resultado es:
Introduce los valores de a,b,c
Valor de A ==> 1
Valor de B ==> 2
Valor de C ==> 3
Positivo -nan
Negativo -nan
Un saludo.
El problema está en la raíz cuadrada:
res1 = (-b+sqrt(b*b-4*a*c))/(2*a);
res2 = (-b-sqrt(b*b-4*a*c))/(2*a);
Si los valores son los siguientes:
Entonces, te está quedando así:
res1 = (-2 + sqrt((2*2) - (4*1*3))) = -2 + sqrt(4 - 12)
Es decir, que estás intentando calcular una raíz cuadrada negativa, y eso no se puede hacer.
NaN significa "Not A Number", que viene a ser algo así como "no es un número", y Linux lo printa cada vez que haces una operación ilegal, como dividir por cero o una raíz cuadrada negativa, como es el caso. El resultado no es un número (según la teoría matemática es infinito o -infinito, de ahí el -nan), y por eso te saca el NaN. Windows, por su parte, te sacaría un #IND. Para más información sobre esto: http://www.johndcook.com/IEEE_exceptions_in_cpp.html
NaN significa "Not A NumberSignifica que el resultado de la raiz cuadrada es negativo, o se esta dividiendo por cero, el problema no es de programación ni lógica estructura, es lógica aritmetica, se trata de un problema matematico amigo mio :silbar: :silbar:
Citara = 1
b = 2
c = 3
Citarres1 = (-b+sqrt(b*b-4*a*c))/(2*a);
res2 = (-b-sqrt(b*b-4*a*c))/(2*a);
res1 = ( -2 + sqrt ( 2*2 - 4*1*3 ) ) / (2*1)
= ( -2 + sqrt (
4 - 12 ) ) / 2
= ( -2 + sqrt (
-8 ) ) / 2
----> Una raiz cuadrada no es posible cálcularla con números reales mayores de cero, es decir, no funciona con números negativos, a menos que uses números complejos y uses el imaginario
iIntenta usar otros valores y comprueba con lapiz y papel los resultados
Gracias por la ayuda me sirvió de mucho y si ya me di cuenta en que estaba mal :silbar: :silbar: gracias dato000