[C con Clase] Resultado no esperado.

Antonio Félix Enríquez antoniofelix91 en gmail.com
Mar Sep 21 19:08:09 CEST 2010


Buenas, en la librería math viene incluída una función para obtener el 
valor absoluto, fabs.

Aquí la implementación:

#include <stdio.h>
#include <math.h>

/* Programa para el cálculo del área de un triángulo.
El programa, al recibir los tres laterales de un triángulo calcula su área*/

void main(void){

float la1=0, la2=0, la3=0, aux=0, Are= 0;

printf("Ingrese los tres laterales de un triángulo: ");
scanf("%f %f %f", &la1, &la2, &la3);
aux = (la1 + la2 + la3) / 2;
Are = sqrt( aux * fabs(( aux-la1)) * fabs(( aux-la2)) * fabs(( aux-la3)));
printf("\nEl área es %6.2f\n", Are);
}

Un saludo y gracias nuevamente.

Reignerok escribió:
> Supongo que necesitarás la diferencia entre ambos números. Podrías 
> hacer una función que calculara el valor absoluto, de forma que se te 
> convierta en positivo y ya no haya problema.
>
> Un saludo.
>
> El 21 de septiembre de 2010 18:34, Antonio Félix Enríquez 
> <antoniofelix91 en gmail.com <mailto:antoniofelix91 en gmail.com>> escribió:
>
>     Buenas, pues podría ser por eso, yo realmente no lo hago así, pero
>     como viene con ese ejemplo y con esa fórmula en el libro, vamos en
>     bachillerato no te enseñan de esa forma :P.
>
>     Muchas gracias a todos, un saludo ^^.
>
>     Josu Diaz de Arcaya escribió:
>>     sospecho que es porque no se puede hacer la raiz de un numero
>>     negativo.
>>
>>     Si ingresas 6 3 2 por ej, devuelve nan porque el resultado de
>>     (aux -l1) es negativo y por consiguiente haces la raiz de un
>>     numero negativo
>>
>>     Curiosa forma de calcular el area de un triangulo...
>>
>>     On Tue, 2010-09-21 at 17:56 +0200, Reignerok wrote:
>>>     NaN significa Not a Number. Debe ser que en alguna operación
>>>     estás cometiendo un error. ¿Has revisado las operaciones a mano?
>>>
>>>     El 21 de septiembre de 2010 17:51, Antonio Félix Enríquez
>>>     <antoniofelix91 en gmail.com <mailto:antoniofelix91 en gmail.com>>
>>>     escribió: 
>>>
>>>         Hola, estoy aprendiendo a programar en C con algunos libros
>>>         que me he comprado, ahora mismo estoy leyendo Fundamentos de
>>>         programación: Piensa en C, me ha surgido un problema y es el
>>>         siguiente:
>>>
>>>         El código:
>>>
>>>         #include <stdio.h>
>>>         #include <math.h>
>>>
>>>         /* Programa para el cálculo del área de un triángulo.
>>>         El programa, al recibir los tres laterales de un triángulo
>>>         calcula su área*/
>>>
>>>         void main(void){
>>>
>>>         float la1=0, la2=0, la3=0, aux=0, Are=0;
>>>
>>>         printf("Ingrese los tres laterales de un triángulo: ");
>>>         scanf("%f %f %f", &la1, &la2, &la3);
>>>         aux = (la1 + la2 + la3) / 2;
>>>         Are = sqrt( aux * (aux - la1) * (aux - la2) * (aux - la3));
>>>         printf("\nEl área es %f\n", Are);
>>>         }
>>>
>>>         El problema es que me produce un resultado algo raro a mi
>>>         parecer, pues en vez de imprimir el área de un triángulo
>>>         imprime casi siempre *nan*lo cual me parece bastante raro.
>>>
>>>
>>>         Compilo con gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48) con
>>>         la siguiente orden, gcc -Wall -lm codigo.c -o
>>>         calcular_area_triangulo.
>>>
>>>         Un saludo y gracias.
>>>
>>>
>>>         _______________________________________________
>>>         Lista de correo Cconclase Cconclase en listas.conclase.net
>>>         <mailto:Cconclase en listas.conclase.net>
>>>         http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>>         Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>>         <http://listas.conclase.net/index.php?gid=2&mnu=FAQ> 
>>>
>>>
>>>     _______________________________________________
>>>     Lista de correo Cconclase Cconclase en listas.conclase.net <mailto:Cconclase en listas.conclase.net>
>>>     http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>>     Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ <http://listas.conclase.net/index.php?gid=2&mnu=FAQ>
>>>         
>>
>>     ------------------------------------------------------------------------
>>     _______________________________________________ Lista de correo
>>     Cconclase Cconclase en listas.conclase.net
>>     <mailto:Cconclase en listas.conclase.net>
>>     http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>     Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>     <http://listas.conclase.net/index.php?gid=2&mnu=FAQ>
>
>
>     _______________________________________________
>     Lista de correo Cconclase Cconclase en listas.conclase.net
>     <mailto:Cconclase en listas.conclase.net>
>     http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>     Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>     <http://listas.conclase.net/index.php?gid=2&mnu=FAQ>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100921/c93e39e2/attachment.html>


Más información sobre la lista de distribución Cconclase