Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Calcular area de un triangolo a partir de coordenadas de vertices

Estas en el tema de Calcular area de un triangolo a partir de coordenadas de vertices en el foro de C/C++ en Foros del Web. 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: ...
  #1 (permalink)  
Antiguo 25/06/2016, 02:32
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 8 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?
  #2 (permalink)  
Antiguo 25/06/2016, 04:31
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Calcular area de un triangolo a partir de coordenadas de vertices

Creo que el fallo es un paréntesis mal puesto:

Código C++:
Ver original
  1. d= sqrt(pow(coordenada2.x - coordenada1.x,2)+(pow(coordenada2.y - coordenada1.y,2)));
__________________
Mi calculadora en Qt
  #3 (permalink)  
Antiguo 27/06/2016, 08:01
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 8 meses
Puntos: 3
Respuesta: Calcular area de un triangolo a partir de coordenadas de vertices

No influye en el resultado y si lo quito sigue igual.
  #4 (permalink)  
Antiguo 27/06/2016, 09:39
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 9 meses
Puntos: 27
Respuesta: Calcular area de un triangolo a partir de coordenadas de vertices

Lo correcto es ponerlo como te ha dicho dehm. Yo creo que sí funciona, con que posiciones estás probando, revisa que los números que pruebas forman un triángulo, porque sino te saldrá 0 (a la raíz llego el cero) o NaN (a la raíz llegó un número negativo).
  #5 (permalink)  
Antiguo 27/06/2016, 14:38
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Calcular area de un triangolo a partir de coordenadas de vertices

Mira a ver que aparte de que he quitado los paréntesis exteriores, hay otro mal puesto

Código C++:
Ver original
  1. d= sqrt(pow(coordenada2.x - coordenada1.x,2))+(pow(coordenada2.y - coordenada1.y,2));#tu expresión sin los paréntesis exteriores
  2.  
  3. d= sqrt(pow(coordenada2.x - coordenada1.x,2)+(pow(coordenada2.y - coordenada1.y,2)));
__________________
Mi calculadora en Qt
  #6 (permalink)  
Antiguo 27/06/2016, 17:18
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 8 meses
Puntos: 3
Respuesta: Calcular area de un triangolo a partir de coordenadas de vertices

Pues teníais razón, sobraba un paréntesis. Ahora va correcto.

Etiquetas: area, calcular, char, coordenadas, dev, int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:35.