Solução Exercício Polimorfismo: mudanças entre as edições

De IFSC
Ir para navegação Ir para pesquisar
imported>Fargoud
(Criou página com ' #include <iostream> using namespace std; →‎***********: class FormaGeometrica { public: float area; float perimetro; virtual void Entraparam()=0; //m...')
 
imported>Fargoud
Sem resumo de edição
Linha 67: Linha 67:
  Retangulo r1;
  Retangulo r1;
  Quadrado q1;
  Quadrado q1;
     cout<< "*** PROGRAMA DE GEOMETRIA ****"<< endl;
     cout<< "*** PROGRAMA DE GEOMETRIA ****"<< endl;
     cout<<"\n\nDigite qual sua forma geometrica desejada: "<< endl;
     cout<<"\n\nDigite qual sua forma geometrica desejada: "<< endl;

Edição das 15h26min de 16 de maio de 2018

#include <iostream>
using namespace std;
/*************/
class FormaGeometrica {
  public:
   float area;
   float perimetro;
   virtual void Entraparam()=0;       //metodos virtuais puros
   virtual float  CalculaArea() =0;
   virtual float  CalculaPerimetro()=0;
};
/*************/
class Circulo: public FormaGeometrica {
   private:
        float raio;
   public:
       void Entraparam()
       { cout<< "\nEntre com o raio do circulo: "<< endl;
          cin>>raio;           }
       float CalculaArea()
        {  area = 3.14159 *raio*raio;
            return area;}
       float CalculaPerimetro()
        {  perimetro = 2*3.14159 *raio;
            return perimetro;}
     ~Circulo() { cout << "\n\nDestrói circulo" << endl; }
};
/*************/
class Retangulo: public FormaGeometrica {
   private:
        float altura;
        float largura;
   public:
       void Entraparam()
       { cout<< "\nEntre com o valor da altura do retangulo: "<< endl;
          cin>>altura;
          cout<< "\nEntre com o valor da largura do retangulo: "<< endl;
          cin>>largura;    }
       float CalculaArea()
        {  area = altura*largura;
            return area;}
       float CalculaPerimetro()
        {  perimetro = 2*altura + 2*largura;
            return perimetro;}
     ~Retangulo() { cout << "\n\nDestrói retangulo" << endl; }
};
/*************/
class Quadrado: public FormaGeometrica{
   private:
        float lado;
   public:
       void Entraparam()
       { cout<< "\nEntre com o comprimento do lado do quadrado: "<< endl;
          cin>>lado;           }
       float CalculaArea()
        {  area = lado*lado;
            return area;}
       float CalculaPerimetro()
        {  perimetro = 4*lado;
            return perimetro;}
     ~Quadrado() { cout << "\n\nDestrói quadrado" << endl; }
};
/*************/
int main(void) {
char op;
Circulo c1;
Retangulo r1;
Quadrado q1;
   cout<< "*** PROGRAMA DE GEOMETRIA ****"<< endl;
   cout<<"\n\nDigite qual sua forma geometrica desejada: "<< endl;
   cout<<"\n(c) Circulo; \n(r) Retangulo; \n(q) Quadrado \n>> "<< endl;
   cin>> op;
   switch(op)
   { case '1':
   case 'c':
   case 'C': c1.Entraparam();
                   cout<< "\nArea de saida: "<<  c1.CalculaArea() << endl;
                   cout<< "\nPerimetro de saida: "<< c1.CalculaPerimetro() <<endl;
                   break;
   case '2':
   case 'r':
   case 'R': r1.Entraparam();
                   cout<< "\nArea de saida: "<< r1.CalculaArea() <<endl;
                   cout<< "\nPerimetro de saida: "<< r1.CalculaPerimetro() <<endl;
                   break;
   case '3':
   case 'q':
   case 'Q': q1.Entraparam();
                   cout<< "\nArea de saida: "<< q1.CalculaArea() << endl;
                   cout<< "\nPerimetro de saida: "<< q1.CalculaPerimetro() << endl;
                   break;
   default: cout<< "\nTipo invalido/inexistente!!"<<endl;
   }
 return 0;
}