elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el ttwitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda en la impresion en pantalla
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda en la impresion en pantalla  (Leído 3,236 veces)
EdgarKrieger

Desconectado Desconectado

Mensajes: 50


Necesito aprender mucho más


Ver Perfil
Duda en la impresion en pantalla
« en: 4 Noviembre 2013, 05:15 am »

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


En línea

A través de los años eh aprendido que si realmente queremos hacer algo o aprender cosas nuevas necesitamos hacer muchos sacrificios como tiempo , dinero, personas, etc. y puedo decir que me falta mucho por aprender.
$trunk

Desconectado Desconectado

Mensajes: 22



Ver Perfil WWW
Re: Duda en la impresion en pantalla
« Respuesta #1 en: 4 Noviembre 2013, 08:54 am »

Un saludo.

El problema está en la raíz cuadrada:
Código:
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:
  • a = 1
  • b = 2
  • c = 3

Entonces, te está quedando así:
Código:
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


En línea




"A la persona no se le conoce por lo que sabe, sino por lo que hace con lo que sabe" - Martin Luther King
dato000


Desconectado Desconectado

Mensajes: 3.033



Ver Perfil
Re: Duda en la impresion en pantalla
« Respuesta #2 en: 5 Noviembre 2013, 01:39 am »

NaN significa "Not A Number

Significa 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:

Citar
a = 1
b = 2
c = 3


Citar
res1 = (-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 i

Intenta usar otros valores y comprueba con lapiz y papel los resultados
En línea


EdgarKrieger

Desconectado Desconectado

Mensajes: 50


Necesito aprender mucho más


Ver Perfil
Re: Duda en la impresion en pantalla
« Respuesta #3 en: 27 Noviembre 2013, 20:25 pm »

Gracias por la ayuda me sirvió de mucho y si ya me di cuenta en que estaba mal  :silbar: :silbar: gracias dato000
En línea

A través de los años eh aprendido que si realmente queremos hacer algo o aprender cosas nuevas necesitamos hacer muchos sacrificios como tiempo , dinero, personas, etc. y puedo decir que me falta mucho por aprender.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como hacer para que la impresion se vea casi igual que la pantalla?
Diseño Gráfico
evad 9 40,278 Último mensaje 10 Noviembre 2005, 08:47 am
por evad
[Duda] Impresion stdprn « 1 2 »
Programación C/C++
apoeti 10 3,541 Último mensaje 6 Septiembre 2012, 14:26 pm
por apoeti
Problema con impresión en pantalla
Programación C/C++
7hongo7 1 930 Último mensaje 30 Marzo 2013, 00:32 am
por durasno
Python, espacios para impresion en pantalla
Scripting
metalost 1 1,719 Último mensaje 21 Mayo 2017, 01:08 am
por engel lex
Duda general Impresión por VPN W10
Windows
SrMcLister 0 375 Último mensaje 16 Junio 2019, 17:17 pm
por SrMcLister
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines