Suma, distancias, producto punto y formato de vectores cartesianos en 2D

Este programa se usa para definir una estructura de tipo “Punto”, cuyos miembros pueden verse como puntos o vectores.

Las funciones correspondientes dentro de la estructura calculan la distancia al origen (de un solo punto o vector), la distancia entre dos puntos (o el módulo de la resta de dos vectores), y el producto punto de dos vectores.

Las funciones fuera de la estructura muestran cómo utilizar las propiedades de la estructura.

El formato de entrada de los datos y la forma en que se despliegan también se incluyen en la estructura.

Limitaciones: sólo se pueden introducir dos puntos (o vectores) por corrida, cada uno de dos componentes. Los vectores obedecen geometría euclidiana.

El resultado puede verse en la imagen de hasta arriba y hasta abajo.

================================= Código ===================================

#include
#include

using namespace std;

struct Punto{
float x; float y;

float disto(){                                                   //distancia al origen
return (float)sqrt(x*x+y*y);
}

float distEP(Punto ps){                                          //distancia entre dos puntos
return sqrt(pow((x-ps.x),2)+pow((y-ps.y),2));
}

friend Punto operator+(const Punto pt1, const Punto pt2){ //Suma de dos puntos
Punto pt3;
pt3.x = pt1.x + pt2.x;
pt3.y = pt1.y + pt2.y;
return pt3;
}

friend Punto operator+=(Punto &pt1, const Punto pt2){ //Suma compacta de dos puntos
pt1.x += pt2.x;
pt1.y += pt2.y;
}

friend float operator*(const Punto pt1, const Punto pt2){        //Producto punto 2D
float intprod = pt1.x*pt2.x + pt1.y*pt2.y;
return intprod;
}

friend ostream& operator << (ostream& os, const Punto &p){       //Formato de entrada
os << “(“<<p.x<<“,”<< p.y<<“)”<<endl; return os; } friend istream& operator >> (istream& is, Punto &p){             //Formato de salida
char c;
cout <<“Introducir valores en formato x,y: “; is >>p.x>>c>>p.y;
return is;
}
};

void print(Punto pt1, Punto pt2, Punto pt3, float intprod){ //Imprime los resultados de las operaciones de vectores
cout << “Punto 1: (“<<pt1.x<<“,”< < << “Distancia entre puntos: “<<pt1.distEP(pt2)<<endl<<endl
<< “Suma de puntos: (“<<pt3.x<<“,”<<pt3.y<<“)”<<endl<<endl
<< “Producto interior: ” <<intprod<<endl; } int main(){ Punto pt1, pt2, pt3; cin >> pt1; cin >> pt2;

float intprod=pt1*pt2;
pt3 = pt1+pt2;

print(pt1, pt2, pt3, intprod);

pt1+=pt2;

cout <<“Suma de puntos (con +=): (“< system(“pause”);
return 0;
}

Resultado

clase-punto

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s