[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