¿Cuatro puntos en el plano forman un cuadrado?

Iván Alías

/* Este programa decide si los puntos del plano a,b,c,d pueden formar un 
cuadrado. Si no dice nada no se puede extraer conclusión. Incluso puede 
darse el caso que esos mismos puntos dados en otro orden puedan formarlo.*/

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
float ax,ay,bx,by,cx,cy,dx,dy;
float abx,aby,adx,ady,cdx,cdy,cbx,cby;
float distab,distbc,distcd,distda;

cout<<"Dame las coordenadas de los puntos a,b,c,d en orden:";

cin >> ax;
cin >> ay;
cin >> bx;
cin >> by;
cin >> cx;
cin >> cy;
cin >> dx;
cin >> dy;

abx=bx-ax;
aby=by-ay;
adx=dx-ax;
ady=dy-ay;
cdx=dx-cx;
cdy=dy-cy;
cbx=bx-cx;
cby=by-cy;
distab=sqrt((bx-ax)*(bx-ax)+(by-ay)*(by-ay));
distbc=sqrt((cx-bx)*(cx-bx)+(cy-by)*(cy-by));
distcd=sqrt((dx-cx)*(dx-cx)+(dy-cy)*(dy-cy));
distda=sqrt((ax-dx)*(ax-dx)+(ay-dy)*(ay-dy));

if((distab==distbc==distcd==distda) 
     && ((abx*adx+aby*ady==0) && (cdx*cbx+cdy*cby==0)))

{cout << "Los cuatro puntos forman un cuadrado";}

else
{cout << "NO SE PUEDE DECIR si los cuatro puntos forman un cuadrado";}

return 0;
}
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

3 respuestas a ¿Cuatro puntos en el plano forman un cuadrado?

  1. Este algoritmo resuelve correctamente sólo algunos casos, en concreto si los 4 vértices son dados con un cierto orden. Ejemplo: si das los siguientes vértices en el orden a=(0,0),b=(1,0),c=(1,1),d=(0,1) el algoritmo decide que forman un cuadrado, pero si das los mismos vértices en otro orden, por ejemplo, a=(0,0),b=(1,1),c=(1,0),d=(0,1) el algoritmo decide que NO forman un cuadrado, pero evidentemente SÍ que se puede construir ese cuadrado. Así pues este algoritmo es correcto con ciertas restricciones que deberían ser advertidas al usuario de lo contrario podría sacar conclusiones falsas. En resumen, este algoritmo NO resuelve el problema general planteado.

  2. ¿Y si se pusiera la restricción estaría bien? Porque si no, no sabría cómo resolverlo.

  3. Sí claro, lo puedes dejar el programa pero observa las aclaraciones hechas en el comentario inicial y la salida de los resultados que se hace al final. De esta forma no es incorrecto.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s