#include<iostream>
#include<stdlib.h>
#include<math.h>
#include<iomanip>
using namespace std;
#define PI 3.1416
class circulo{
protected:
int r;
public:
circulo(){r=0;}
circulo(int a){r=a;}
int getradio(){return r;}
float getarea(){return PI*r*r;}
};
class ConoCircularRecto: public circulo{
private:
int h,g;
public:
ConoCircularRecto(){h=0;g=0;}
ConoCircularRecto(int rad,int alt);
~ConoCircularRecto(){}
int getaltura(){return h;}
float CalcularGeneratriz();
void VerDatos();
void AreaCono();
void VolumenCono();
friend ConoCircularRecto LEER(ConoCircularRecto P);
};
ConoCircularRecto::ConoCircularRecto(int rad,int alt)
{
r=rad;h=alt;
}
float ConoCircularRecto::CalcularGeneratriz()
{
return (sqrt((r
*r
)+(h
*h
))); }
void ConoCircularRecto::VerDatos()
{
cout<<"nDATOS DEL CONO CIRCULAR RECTO"<<endl;
cout<<"Radiott:"<<getradio()<<" unidades";
cout<<"nAlturatt:"<<h<<" unidades";
cout<<"nGeneratrizt:"<<CalcularGeneratriz()<<" unidades";
}
void ConoCircularRecto::AreaCono()
{ float area;
area=(getarea())+(PI*getradio()*g);
cout<<"nEl Area est:"<<setprecision(2)<<setiosflags(ios::fixed|ios::showpoint)<<area<<" unidades cuadradas";
}
void ConoCircularRecto::VolumenCono()
{ float volumen;
volumen=(PI*getradio()*getradio()*h)/3;
cout<<"nEl Volumen est:"<<volumen<<" unidades cubicas"<<endl;
}
ConoCircularRecto LEER(ConoCircularRecto );
ConoCircularRecto LEER(ConoCircularRecto P)
{
int a,b;
cout<<"nRadiott:";cin>>a;
cout<<"nAlturatt:";cin>>b;
ConoCircularRecto P(a,b);
return P;
}
main()
{ ConoCircularRecto P(5,12);
P.CalcularGeneratriz();
P.VerDatos();
P.AreaCono();
P.VolumenCono();
cout<<"LECTURA DE DATOS"<<endl;
LEER(P); //debe retornar el nuevo P con los valores pedidos en la función LEER
P.VerDatos();
P.AreaCono();
P.VolumenCono();
return 0;
}