jueves, 7 de julio de 2011

Deitel_C++_6.13 (Calcular Área y Perímetro de un Rectángulo en C++)



  /*  Cree una clase Rectangulo mas compleja que la del ejercicio 6.12

       Esta clase solo almacena las coordenadas cartesianas de las cuatro

     esquinas del rectangulo. El constructor llama a una funcion set

     que acepta cuatro conjuntos de coordenadas y verifica que todas esten

     en el primer cuadrante, sin ninguna coordenada x o y mayores que 20.0

     Dicha funcion tambien verifica que las coordenadas indicadas 

     efectivamente especifiquen un rectangulo. Mediante funciones miembro

     se calculan longitud, anchura, perimetro y area. La longitud es la

     mayor de las dos dimensiones. Incluya la funcion de predicado cuadrado

     que determina si el rectangulo es un cuadrado.

  */

       

  #include <iostream>

  using namespace::std;









  class Rectangulo



  {        // Abre la clase Rectangulo

   public: 

   Rectangulo( float = 0, float = 0);

   void setCoordenadas(float, float);

   void setCoordenadas_Usuario();

   void setLongitud();

   void setAnchura(); 

   float getAbscisa();

   float getOrdenada();

   void Utileria();

   void Cuadrado( float, float );



   private:

   float x;

   float y;

   

   float Perimetro( float, float);

   

   float Area( float, float);

 

  };          // Cierra la clase Rectangulo 





 ///////////////////////////////////////////////////////////////////////

 // CONSTRUCTOR

 ////////////////////////////////////////////////////////////////////////

 

  Rectangulo::Rectangulo( float a, float b)

  {   // Abre constructor

   x = a;

   y = b;

  }       // Cierra constructor





 ////////////////////////////////////////////////////////////////////

 // FUNCION MIEMBRO SET COORDENADAS_USUARIO 

 //////////////////////////////////////////////////////////////////

  void Rectangulo::setCoordenadas_Usuario()

  {              // Abre setCoordenadas_Usuario

   float auxiliar1;

   float auxiliar2;

   cout << "\nPor favor introduzca un valor valido para x "

        << "( mayor que 0.0 y menor que 20.0)" << endl;

   cin >> auxiliar1;

   

   cout << "\nPor favor introduzca un valor valido para y "

        << " ( mayor que 0.0 y menor que 20.0 )" << endl;

   cin >> auxiliar2;

   setCoordenadas( auxiliar1, auxiliar2); 

  }               // Cierra setCoordenadas_Usuario 







  /////////////////////////////////////////////////////////////////////

  // FUNCION MIEMBRO SET COORDENADAS 

  /////////////////////////////////////////////////////////////////



   void Rectangulo::setCoordenadas( float m, float n)



   {            // Abre setCoordenadas

    x = ( 0 < m && 20 >= m)? m: 1;

    y = ( 0 < n && 20 >= n)? n: 1;  

   }            // Cierra setCoordenadas





   ////////////////////////////////////////////////////////////////////////

   // FUNCION MIEMBRO GETABSCISA

   //////////////////////////////////////////////////////////////////////

  float Rectangulo::getAbscisa()

  {          // Abre  getAbscisa

  return x;

  }           // Cierra getAbscisa





 

  /////////////////////////////////////////////////////////////////////////

  // FUNCION MIEMBRO GETORDENADA

  ////////////////////////////////////////////////////////////////////////

  float Rectangulo::getOrdenada()

  {         // Abre getOrdenada

  return y;

 

  }         // Cierra getOrdenada









 

  //////////////////////////////////////////////////////////////////////

  // FUNCION MIEMBRO UTILERIA 

  ///////////////////////////////////////////////////////////////////

  void Rectangulo::Utileria()

  {         // Abre Utileria 

  Rectangulo punto1;

  Rectangulo punto2;

  Rectangulo punto3;

  Rectangulo punto4;

  punto1.setCoordenadas_Usuario();

  punto2.setCoordenadas_Usuario(); 

  punto3.setCoordenadas_Usuario();

  punto4.setCoordenadas_Usuario();





  int rectangulo = 0;

  float auxiliar1 = 0;

  float auxiliar2 = 0;

  if ( punto1.getAbscisa() == punto2.getAbscisa() )

  {    // abre primer if

  if ( punto3.getAbscisa() == punto4.getAbscisa() )

  if ( punto1.getOrdenada() == punto3.getOrdenada() )

  if ( punto2.getOrdenada() == punto4.getOrdenada())

  {

  rectangulo = 1; 

  auxiliar1 = punto2.getOrdenada() - punto1.getOrdenada();

  auxiliar2 = punto4.getAbscisa() - punto2.getAbscisa();

  }

  if ( punto1.getOrdenada() == punto4.getOrdenada()) 

  if ( punto2.getOrdenada() == punto3.getOrdenada())

  {

  rectangulo = 1;

  auxiliar1 = punto2.getOrdenada() - punto1.getOrdenada(); 

  auxiliar2 = punto3.getAbscisa() - punto2.getAbscisa(); 

  } 

  }     // Cierra  primer if











  if ( punto1.getAbscisa() == punto3.getAbscisa() )

  {         // Abre segundo if

    

  if ( punto2.getAbscisa() == punto4.getAbscisa() )

  {       // Abre if anidado

   

  if ( punto1.getOrdenada() == punto2.getOrdenada() )

  {    

  if ( punto3.getOrdenada() == punto4.getOrdenada() )

  {      // Abre if

  rectangulo = 1;

  auxiliar1 = punto3.getOrdenada() - punto1.getOrdenada();

  auxiliar2 = punto4.getAbscisa() - punto3.getAbscisa();

  }

  }

  

  if ( punto1.getOrdenada() == punto4.getOrdenada())

  if ( punto3.getOrdenada() == punto2.getOrdenada() )

  { 

  rectangulo = 1;  

  auxiliar1 = punto3.getOrdenada() - punto1.getOrdenada();

  auxiliar2 = punto2.getAbscisa() - punto3.getAbscisa();

  }

  }        // Cierra if anidado 

   

  }          // Cierra segundo if











  if ( punto1.getAbscisa() == punto4.getAbscisa())

  {        // Abre tercer if

  if ( punto2.getAbscisa() == punto3.getAbscisa())

  {         // Abre if anidado

  if ( punto1.getOrdenada() == punto2.getOrdenada())

  if ( punto4.getOrdenada() == punto3.getOrdenada())

  {

  rectangulo = 1;

  auxiliar1 = punto4.getOrdenada() - punto1.getOrdenada();

  auxiliar2 = punto3.getAbscisa() - punto4.getAbscisa();

  

  }

  if ( punto1.getOrdenada() == punto3.getOrdenada())

  if ( punto2.getOrdenada() == punto4.getOrdenada())

  {

  rectangulo = 1;

  auxiliar1 = punto4.getOrdenada() - punto1.getOrdenada();

  auxiliar2 = punto4.getAbscisa() - punto2.getAbscisa();

  }

  }         // Cierra if anidado

  }           // Cierra tercer if







  if ( 1 == rectangulo )

  cout << "\nLas coordenadas forman un rectangulo." << endl;

  else

   

  cout << "\nLas coordenadas no forman  un rectangulo. " << endl;

  if ( auxiliar1 < 0 )

  auxiliar1 = -auxiliar1;

  

  if ( auxiliar2 < 0 )

  auxiliar2 = -auxiliar2;



  if ( auxiliar1 > auxiliar2 )

 

  {

  cout << "\nLa longitud es: " << auxiliar1 << endl;

  cout << "\nEl ancho es: " << auxiliar2 << endl;

  }

  else

  {

  

  cout << "\nLa longitud es: " << auxiliar2 << endl;

  cout << "\nEl ancho es: " << auxiliar1 << endl;

  }





  cout <<"\nEl perimetro es: " << Perimetro( auxiliar1, auxiliar2) << endl;

  cout << "\nEl area es: " << Area( auxiliar1, auxiliar2 ) << endl;

  if ( 0 != Area( auxiliar1, auxiliar2 ) )

  Cuadrado( auxiliar1, auxiliar2);

  }          // Cierra Utileria 



  ////////////////////////////////////////////////////////////////////

  // FUNCION MIEMBRO CUADRADO

  ////////////////////////////////////////////////////////////////

 

  void Rectangulo::Cuadrado( float a, float b)



  {         // Abre funcion miembro cuadrado

   if ( a == b )

   cout << "\nEl rectangulo es un cuadrado. " << endl;

   else

   cout << "\nEl rectangulo no es un cuadrado. " << endl;

  }             // Cierra funcion miembro cuadrado





  ////////////////////////////////////////////////////////////////////

  // FUNCION MIEMBRO PERIMETRO

  ///////////////////////////////////////////////////////////////////

  float Rectangulo::Perimetro( float n, float m)

  {   // Abre Perimetro



  return 2*n + 2*m;

     

  }       // Cierra Perimetro







  ////////////////////////////////////////////////////////////////////

  // FUNCION MIEMBRO AREA

  //////////////////////////////////////////////////////////////////////

   float Rectangulo::Area( float s, float t)

   {       // Abre Area

   return s*t;

   }       // Cierra Area







  /////////////////////////////////////////////////////////////////////

  // MAIN

  /////////////////////////////////////////////////////////////////////



  int main()

  {         // Abre main

   Rectangulo miRectangulo;

   miRectangulo.Utileria();

   return 0;

  }           // Cierra main


1 comentario:

Related Posts Plugin for WordPress, Blogger...