Advertisement
AntonioVillanueva

Triangulo2

Jun 10th, 2016
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.95 KB | None | 0 0
  1. //compilacion g++ -std=c++11 -o NombreEjecutable NombreFuente.cpp
  2. #include <iostream>
  3. #include <cstring>
  4. #include <cmath>
  5. #include <sstream>
  6.  
  7. #define PI 3.14159265
  8. using namespace std;
  9.  
  10. class pto{//clase que nos define un punto
  11.     public:
  12.     pto (double x=0,double y=0);//Constructor de la clase punto (0,0) por defecto
  13.     double getX()const;
  14.     double getY()const;
  15.  
  16.     private:
  17.     double x,y;// punto x,y
  18. };
  19. //----------------------------------------------------------------------
  20.     pto::pto (double x,double y):x(x),y(y){}
  21.     double pto::getX()const{return x;}
  22.     double pto::getY()const{return y;}
  23.  
  24. //----------------------------------------------------------------------    
  25. //----------------------------------------------------------------------
  26.  
  27. class recta{//clase que nos define una recta
  28.     public:
  29.     recta (pto XX,pto YY);//Constructor de la clase recta ,con dos puntos
  30.     double longitud() const;//distancia entre los dos puntos de la recta A-B
  31.     pto vdir()const;//vector director
  32.     double angulo(recta r);//angulo entre dos rectas  http://www.vitutor.com/geo/rec/d_9.html
  33.    
  34.     private:
  35.     pto A,B;//Una recta se define con dos puntos A-B
  36. };
  37. //----------------------------------------------------------------------
  38.     recta::recta (pto XX,pto YY):A(XX.getX(),XX.getY()),B(YY.getX(),YY.getY()){}
  39.     double recta::longitud() const{
  40.     return sqrt (abs (pow((A.getX()-B.getX()),2))+abs (pow((A.getY()-B.getY()),2)));}
  41.     pto recta::vdir()const{return pto((B.getX()-A.getX()),(B.getY()-A.getY()));}
  42.     double recta::angulo(recta r){//angulo entre dos rectas
  43.     double v1=vdir().getX();
  44.     double v2=vdir().getY();
  45.    
  46.     double u1=r.vdir().getX();
  47.     double u2=r.vdir().getY();
  48.    
  49.     return acos(abs(u1*v1+u2*v2)/(sqrt(u1*u1+u2*u2) * sqrt(v1*v1+v2*v2)))* 180.0 /PI;//en grados
  50. }
  51.  
  52.  
  53. //----------------------------------------------------------------------
  54. //----------------------------------------------------------------------
  55. class triangulo{
  56.     public:
  57.     triangulo (pto a,pto b,pto c);//Constructor de un triangulo con tres puntos
  58.     triangulo (recta A_,recta B_,recta C_);//Constructor de un triangulo con tres rectas
  59.     double perimetro()const;//la suma de sus tres lados
  60.     string angulos();//angulos    
  61.     double area()const;//area  
  62.    
  63.     private:
  64.     recta A,B,C;//Tres lados de un triangulo
  65. };
  66. //----------------------------------------------------------------------
  67. //triangulo(recta (XX,YY),recta (YY,ZZ),recta (XX,ZZ));
  68.    
  69.     triangulo::triangulo (pto a,pto b,pto c):A(a,b),B(b,c),C(a,c){};
  70.     triangulo::triangulo (recta A_,recta B_,recta C_):A(A_),B(B_),C(C_){};
  71.     double triangulo::perimetro()const{ return A.longitud()+B.longitud()+C.longitud();}
  72.     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));}
  73.     double triangulo::area()const{
  74.         double p=perimetro()/2;
  75.         double a=A.longitud();//longitud recta A
  76.         double b=B.longitud();//longitud recta B
  77.         double c=C.longitud();//longitud recta C
  78.         //La fórmula de Herón se utiliza para hallar el área de un triángulo conociendo sus tres lados.
  79.         return sqrt(p*(p-a)*(p-b)*(p-c));//http://www.ditutor.com/geometria/area_triangulo.html
  80.     }
  81. //----------------------------------------------------------------------
  82. //----------------------------------------------------------------------
  83.  
  84. ostream& operator<<(ostream& os,triangulo& T){//sobrecarga del operador << para triangulo
  85.     os<<"el perimetro es "<<T.perimetro()<<endl;
  86.     os<<"los angulos internos "<<T.angulos()<<endl;
  87.     os<<"el area del triangulo  "<<T.area()<<endl;
  88.     return os;
  89. }
  90.  
  91. //----------------------------------------------------------------------
  92. //----------------------------------------------------------------------
  93. int main() {
  94.     //Efectuo diferentes test de triangulos
  95.     cout <<"A )Triangulo por puntos  AAA(-2,-1) BBB (2,-1) CCC(0,6)"<< endl;
  96.     pto AAA(-2,-1) ;pto BBB (2,-1) ;pto CCC(0,6) ;//Los tres puntos del triangulo
  97.     triangulo t(AAA,BBB,CCC);//instancio un triangulo t con estos tres puntos
  98.     cout <<t<<endl;//con el operador sobrecargado << muestro la informacion
  99.    
  100.     cout <<"B )Triangulo por rectas"<< endl;
  101.     recta rectaA(AAA,BBB);
  102.     recta rectaB(BBB,CCC);
  103.     recta rectaC(AAA,CCC);
  104.     triangulo tRect(rectaA,rectaB,rectaC);//instancio un triangulo  con estos tres rectas
  105.     cout <<tRect<<endl;//con el operador sobrecargado << muestro la informacion
  106.    
  107.     //http://www.ditutor.com/geometria/area_triangulo.html
  108.     // triángulo rectángulo cuyos catetos miden 3 ,4,5 cm
  109.     //se define por un punto en pto1(0,0) pto2(0,3) pto3(4,0)
  110.     cout <<"C )Triangulo por puntos pto1(0,0) pto2(0,3) pto3(4,0)"<< endl;
  111.     pto pto1(0,0) ;pto pto2(0,3) ;pto pto3(4,0) ;//Los tres puntos del triangulo
  112.     triangulo TrianguloRectangulo(pto1,pto2,pto3);
  113.     cout <<TrianguloRectangulo<<endl;//con el operador sobrecargado << muestro la informacio
  114.    
  115.     return 0;
  116.  
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement