Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/06/2016, 02:32
aguml
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Calcular area de un triangolo a partir de coordenadas de vertices

Hola amigos, estoy intentando calcular el área de un triángulo a partir de las coordenadas de sus vertices y este es el código que tengo:
Código:
#include <stdio.h>
#include <math.h>
 
struct coord{
	float x;
	float y;
};

//Esta función obtiene la distancia entre dos coordenadas.
//Con ella calculo la longitud de los lados
float ObtenerDistancia (struct coord coordenada1, struct coord coordenada2){
	float d;
 
	d= (sqrt(pow(coordenada2.x - coordenada1.x,2))+(pow(coordenada2.y - coordenada1.y,2)));
	return d;
}

//Esta función calcula el área de un triángulo a partir de la longitud de sus lados
//usando para ello la fórmula de Heron
float ObtenerArea(float a,float b,float c){
	float s,area;
	int retval=1;
 
	s=(a+b+c)/2;
	area=sqrt(s*(s-a)*(s-b)*(s-c));
	return area;
}
 
int main ()
{
   struct coord coordenadas[3];
   float a,b,c,area;
   int i;
   
   /Pido las coordenadas para los tres vertices
   for (i=0;i <3;i++){
   	printf("Escribe la coordenada x%d: ",i+1);
   	scanf("%f",&coordenadas[i].x);
   	printf("Escribe la coordenada y%d: ",i+1);
   	scanf("%f",&coordenadas[i].y);
   }
   a=ObtenerDistancia(coordenadas[0],coordenadas[1]);
   b=ObtenerDistancia(coordenadas[0],coordenadas[2]);
   c=ObtenerDistancia(coordenadas[1],coordenadas[2]);
   area=ObtenerArea(a,b,c);
   printf("El area es: %f", area);
 
   getchar();
}
El caso es que dependiendo de las coordenadas me devuelve nan o 0 como área. ¿alguien puede ayudarme?