Cree una clase base llamado punto que consiste de una coordenada x y una coordenada y. A partir de esta clase derive una clase llamada Circulo que tenga un miembro de datos adicional llamado radio. Para esta clase derivada los miembros x y y representan las coordenadas del centro de un circulo. Los miembros de la function de la primera clase deberán consistir de un constructor, una function area llamada area que devuelva cero y una function de distancia que devuelva la distancia entre dos puntos, donde distancia = raiz cuadrada sqrt((x2-x1)^2 +(y2-y1)^2))
Además, la clase derivada deberá tener un constructor y una function que lo anule llamada area que devuelva el area del circulo.
Problema propuesto del Libro C++ para ingenieria y ciencias Gary J. Brinson ejercicios 10.6 problema 5 pag. 592
Codificación CodeBlocks
#include <iostream>
#include <cmath>
using namespace std;
class Punto
{
protected:
int x;
int y;
public:
Punto(int =0, int=0);
void estXY(int,int);
void estableceX(int);
void estableceY(int);
int obtenerX();
int obtenerY();
virtual double area();
double distancia (Punto ,Punto);
};
Punto::Punto(int px, int py)
{
x=px;
y=py;
}
void Punto::estXY(int px,int py)
{
x=px;
y=py;
}
void Punto::estableceX(int px)
{
x=px;
}
void Punto::estableceY(int py)
{
y=py;
}
int Punto::obtenerX()
{
return x;
}
int Punto::obtenerY()
{
return y;
}
double Punto::area()
{
return 0;
}
double Punto::distancia(Punto a, Punto b)
{
int px1,px2,py1,py2;
double res,dist;
px1=a.obtenerX();
px2=b.obtenerX();
py1=a.obtenerY();
py2=b.obtenerY();
res=pow((px2-px1),2)+ pow((py2-py1),2);
dist=sqrt(res);
return dist;
}
class Circulo:public Punto
{
protected:
double radio;
public:
Circulo(double =1.0, int =0, int =0);
void estRadio(double r);
double obtenerRadio();
virtual double area();
};
Circulo::Circulo(double rad,int px,int py)
{
radio=rad;
x=px;
y=py;
}
void Circulo:: estRadio(double r)
{
radio=r;
}
double Circulo::obtenerRadio()
{
return radio;
}
double Circulo::area()
{
return 3.1416*radio*radio;
}
int main()
{
Punto p1(4,5);
Punto p2(8,10);
Circulo c1;
c1.estRadio(10);
cout<<"Area Circulo es : "<<c1.area()<<endl;
cout<<"El area del punto 1 es "<<p1.area()<<endl;
cout<<"La distancia entre Punto 1 y punto 2 es : "<<c1.distancia(p1,p2)<<endl;
return 0;
}
No hay comentarios:
Publicar un comentario