martes, 15 de septiembre de 2015

Ejercicio 5 Clases y constructores

Crear una clase Rectangulo debe almacenarse las coordenadas cartesianas de las cuatro esquinas del rectangulo. El constructor llama una función establecer que acepta cuatro coordenadas y verifica que cada una  de éstas se  encuentren en el primer cuadrante y que ninguna coordenada x o y sea mayor que 20. La función establecer verifica también que las coordenadas proporcionadas forman un rectangulo. Proporcione funciones miembro que calcule la largo, el ancho, el perímetro y el área.

codificación CodeBlocks

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
class Coordenada
{
    private:
    int x;
    int y;
    public:
    Coordenada(int =0, int y=0);
    void estXY(int ,int );
    void estX(int );
    void estY(int );
    int obtenerX();
    int obtenerY();
    int verificaX();
    int verificaY();
    void imprimeCoordenada();
};
Coordenada::Coordenada(int pX, int pY)
{
   x=pX;
   y=pY;
}
void Coordenada::estXY(int pX, int pY)
{
    x=pX;
    y=pY;
}
void Coordenada::estX(int pX)
{
    x=pX;
}
void Coordenada::estY(int pY)
{
    y=pY;
}
int Coordenada::obtenerX()
{
    return x;
}
int Coordenada::obtenerY()
{
    return y;
}
int Coordenada::verificaX()
{
    if (x>=0 && x<=20)
        return 1;
    else
        return 0;
}
int Coordenada::verificaY()
{
    if(y>=0 && y<=20)
    return 1;
else
    return 0;
}
void Coordenada::imprimeCoordenada()
{
    cout<<"La coordenada es "<<"( "<<x<<","<<y<<" )"<<endl;
}
class Rectangulo
{
private:
    Coordenada c1[4];
    int x;
    int ancho;
    int largo;
public:
    Rectangulo(Coordenada c1[4]);
   int establecer ();
   void estAncho(int);
   void estLargo(int);
   Coordenada obtenerCoordenas();
   int obtenerValor();
   int obtenerAncho();
   int obtenerLargo();
   int area();
   int perimetro();
};
Rectangulo::Rectangulo(Coordenada c1[4])
{
    x=establecer();
}
int Rectangulo::establecer( )
{
    int puntoX, puntoY,i;
    cout<<"Recuerde las coordenadas deben estar en el primer cuadrante\nlos valores debes >=0 y <=20\n\n";
    for(i=0;i<=3;i++)
    {
     if(i==0)
     {
       cout<<"(x,y)________\n";
       cout<<"|            |\n";
       cout<<"|___________ |\n";
     }
     else
     {
       if(i==1)
     {
       cout<<" ________(x,y)\n";
       cout<<"|            |\n";
       cout<<"|___________ |\n";
     }
      else
      {
          if(i==2)
     {
       cout<<" __________\n";
       cout<<"|           |\n";
       cout<<"|(x,y)______|\n";
     }
     else
     {
      if(i==3)
     {
       cout<<" ____________\n";
       cout<<"|            |\n";
       cout<<"|_______(x,y)|\n";
     }
    }
   }
  }
    do
    {
      cout<<"\nIntroduce la coordenada "<<i+1<<"  del rectangulo:\n";
      cout<<" X : ? ";
      cin>>puntoX;
      c1[i].estX(puntoX);
    }
    while (c1[i].verificaX()==0);
    do
    {
     cout<<" Y : ? ";
     cin>>puntoY;
     c1[i].estY(puntoY);
    }
    while(c1[i].verificaY()==0);
}
cout<"\n\nLas coordenadas son\n";
for(i=0;i<=3;i++)
    c1[i].imprimeCoordenada();
if((c1[0].obtenerX() == c1[2].obtenerX())&&(c1[1].obtenerX()==c1[3].obtenerX())&&(c1[0].obtenerY()==c1[1].obtenerY())&& c1[2].obtenerY()==c1[3].obtenerY())
return 1;
else
    return 0;
}
/*Coordenada c1[4] Rectangulo::obtenerCoordenas()
{
    return c1;
}*/
void Rectangulo::estLargo(int lar)
{
    largo=lar;
}
void Rectangulo::estAncho(int an)
{
    ancho=an;
}
int Rectangulo::obtenerValor()
{
    return x;
}
int Rectangulo::obtenerAncho()
{
    int y1,y2;
    y1=c1[0].obtenerY();
    y2=c1[2].obtenerY();
    ancho=abs(y2-y1);
    return ancho;
}
int Rectangulo::obtenerLargo()
{
    int x1,x2;
    x1=c1[0].obtenerX();
    x2=c1[1].obtenerX();
    largo=abs(x2-x1);
    return largo;
}
int Rectangulo::area()
{
    return largo*ancho;
}
int Rectangulo::perimetro()
{
    return 2*(largo+ancho);
}

int main()
{   int valor;
    Coordenada c1[4];
    Rectangulo R1(c1);
    valor=R1.obtenerValor();
    if(valor==1)
    {
      cout<<"\nLas Coordenadas forman un rectangulo\n\n";
      cout<<setw(15)<<"Ancho: "<<R1.obtenerAncho()<<endl;
      cout<<setw(15)<<"Largo: "<<R1.obtenerLargo()<<endl;
      cout<<setw(15)<<"Area: "<<R1.area()<<endl;
      cout<<setw(15)<<"Perimetro: "<<R1.perimetro()<<endl;
    }
    else
        cout<<"\n\nLas coordenadas no forman un rectangulo\n";
    return 0;
}


No hay comentarios:

Publicar un comentario