Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //compilacion g++ -std=c++11 -o NombreEjecutable NombreFuente.cpp
- #include <iostream>
- #include <cstring>
- #include <cmath>
- #include <sstream>
- #define PI 3.14159265
- using namespace std;
- class pto{//clase que nos define un punto
- public:
- pto (double x=0,double y=0);//Constructor de la clase punto (0,0) por defecto
- double getX()const;
- double getY()const;
- private:
- double x,y;// punto x,y
- };
- //----------------------------------------------------------------------
- pto::pto (double x,double y):x(x),y(y){}
- double pto::getX()const{return x;}
- double pto::getY()const{return y;}
- //----------------------------------------------------------------------
- //----------------------------------------------------------------------
- class recta{//clase que nos define una recta
- public:
- recta (pto XX,pto YY);//Constructor de la clase recta ,con dos puntos
- double longitud() const;//distancia entre los dos puntos de la recta A-B
- pto vdir()const;//vector director
- double angulo(recta r);//angulo entre dos rectas http://www.vitutor.com/geo/rec/d_9.html
- private:
- pto A,B;//Una recta se define con dos puntos A-B
- };
- //----------------------------------------------------------------------
- recta::recta (pto XX,pto YY):A(XX.getX(),XX.getY()),B(YY.getX(),YY.getY()){}
- double recta::longitud() const{
- return sqrt (abs (pow((A.getX()-B.getX()),2))+abs (pow((A.getY()-B.getY()),2)));}
- pto recta::vdir()const{return pto((B.getX()-A.getX()),(B.getY()-A.getY()));}
- double recta::angulo(recta r){//angulo entre dos rectas
- double v1=vdir().getX();
- double v2=vdir().getY();
- double u1=r.vdir().getX();
- double u2=r.vdir().getY();
- return acos(abs(u1*v1+u2*v2)/(sqrt(u1*u1+u2*u2) * sqrt(v1*v1+v2*v2)))* 180.0 /PI;//en grados
- }
- //----------------------------------------------------------------------
- //----------------------------------------------------------------------
- class triangulo{
- public:
- triangulo (pto a,pto b,pto c);//Constructor de un triangulo con tres puntos
- triangulo (recta A_,recta B_,recta C_);//Constructor de un triangulo con tres rectas
- double perimetro()const;//la suma de sus tres lados
- string angulos();//angulos
- double area()const;//area
- private:
- recta A,B,C;//Tres lados de un triangulo
- };
- //----------------------------------------------------------------------
- //triangulo(recta (XX,YY),recta (YY,ZZ),recta (XX,ZZ));
- triangulo::triangulo (pto a,pto b,pto c):A(a,b),B(b,c),C(a,c){};
- triangulo::triangulo (recta A_,recta B_,recta C_):A(A_),B(B_),C(C_){};
- double triangulo::perimetro()const{ return A.longitud()+B.longitud()+C.longitud();}
- string triangulo::angulos() { return "A-B= "+to_string( A.angulo(B))+" ,B-C= "+to_string (B.angulo(C))+" A-C= "+to_string (A.angulo(C));}
- double triangulo::area()const{
- double p=perimetro()/2;
- double a=A.longitud();//longitud recta A
- double b=B.longitud();//longitud recta B
- double c=C.longitud();//longitud recta C
- //La fórmula de Herón se utiliza para hallar el área de un triángulo conociendo sus tres lados.
- return sqrt(p*(p-a)*(p-b)*(p-c));//http://www.ditutor.com/geometria/area_triangulo.html
- }
- //----------------------------------------------------------------------
- //----------------------------------------------------------------------
- ostream& operator<<(ostream& os,triangulo& T){//sobrecarga del operador << para triangulo
- os<<"el perimetro es "<<T.perimetro()<<endl;
- os<<"los angulos internos "<<T.angulos()<<endl;
- os<<"el area del triangulo "<<T.area()<<endl;
- return os;
- }
- //----------------------------------------------------------------------
- //----------------------------------------------------------------------
- int main() {
- //Efectuo diferentes test de triangulos
- cout <<"A )Triangulo por puntos AAA(-2,-1) BBB (2,-1) CCC(0,6)"<< endl;
- pto AAA(-2,-1) ;pto BBB (2,-1) ;pto CCC(0,6) ;//Los tres puntos del triangulo
- triangulo t(AAA,BBB,CCC);//instancio un triangulo t con estos tres puntos
- cout <<t<<endl;//con el operador sobrecargado << muestro la informacion
- cout <<"B )Triangulo por rectas"<< endl;
- recta rectaA(AAA,BBB);
- recta rectaB(BBB,CCC);
- recta rectaC(AAA,CCC);
- triangulo tRect(rectaA,rectaB,rectaC);//instancio un triangulo con estos tres rectas
- cout <<tRect<<endl;//con el operador sobrecargado << muestro la informacion
- //http://www.ditutor.com/geometria/area_triangulo.html
- // triángulo rectángulo cuyos catetos miden 3 ,4,5 cm
- //se define por un punto en pto1(0,0) pto2(0,3) pto3(4,0)
- cout <<"C )Triangulo por puntos pto1(0,0) pto2(0,3) pto3(4,0)"<< endl;
- pto pto1(0,0) ;pto pto2(0,3) ;pto pto3(4,0) ;//Los tres puntos del triangulo
- triangulo TrianguloRectangulo(pto1,pto2,pto3);
- cout <<TrianguloRectangulo<<endl;//con el operador sobrecargado << muestro la informacio
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement