Puntos alineados o formando un rectángulo

Manuel García

/* Este programa utiliza estructuras para saber si tres puntos del plano, dados por el usuario, están alineados o pueden formar un cuadrado o un rectángulo */

#include<iostream>
#include<stdlib.h>
using namespace std;

struct punto
{
    float x;
    float y;
};

typedef struct punto Punto;

int alineados (Punto a, Punto b, Punto c);
int rectangulo (Punto a, Punto b, Punto c);

int main()

{
    float a1, a2, b1, b2, c1, c2;

    cout << “Dame la componente x del primer punto: “;
    cin >> a1;
    cout << “Dame la componente y del primer punto: “;
    cin >> a2;
    do{cout << “Dame la componente x del segundo punto: “;
    cin >> b1;
    cout << “Dame la componente y del segundo punto: “;
    cin >> b2;} while(a1==b1 && a2==b2);
    do{cout << “Dame la componente x del tercer punto: “;
    cin >> c1;
    cout << “Dame la componente y del tercer punto: “;
    cin >> c2;} while((a1==c1 && a2==c2) || (b1==c1 && b2==c2));

    Punto a={a1,a2};
    Punto b={b1,b2};
    Punto c={c1,c2};

    cout << endl;
    if (alineados(a,b,c))
    cout << “Los tres puntos estan alineados”;
    else
    cout << “Los tres puntos no estan alineados”;
    cout << endl;

    if (rectangulo(a,b,c))
    cout << “Los tres puntos pueden forman un cuadrado o un rectangulo”;
    else
    cout << “Los tres puntos no pueden forman un cuadrado o un rectangulo”;
    cout << endl << endl;

    system(“pause”);
    return 0;

}

int alineados (Punto a, Punto b, Punto c)

{
    float m1, m2;

    m1=(a.y-b.y)/(a.x-b.x);
    m2=(b.y-c.y)/(b.x-c.x);

    if (a.x==b.x && a.x==c.x)
    return 1;
    if ((a.x==b.x || a.x==c.x || b.x==c.x) && (a.x!=c.x || a.x!=b.x || b.x!=c.x))
    return 0;
    if (m1==m2)
    return 1;
    return 0;
}

int rectangulo (Punto a, Punto b, Punto c)

{
    float escalar1, escalar2, escalar3;

    escalar1=(a.x-b.x)*(a.x-c.x)+(a.y-b.y)*(a.y-c.y);
    escalar2=(b.x-c.x)*(b.x-a.x)+(b.y-c.y)*(b.y-a.y);
    escalar3=(c.x-a.x)*(c.x-b.x)+(c.y-a.y)*(c.y-b.y);

    if (escalar1==0 || escalar2==0 || escalar3==0)
    return 1;
    return 0;
}

Anuncios
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

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