Skip to content

Instantly share code, notes, and snippets.

@isagallerani
Created December 18, 2016 23:32
Show Gist options
  • Save isagallerani/9a0e0687d4ba8056f1191e63d9aa22e3 to your computer and use it in GitHub Desktop.
Save isagallerani/9a0e0687d4ba8056f1191e63d9aa22e3 to your computer and use it in GitHub Desktop.
#include <iostream>
using namespace::std;
class Ponto{
public:
Ponto(int _x=1, int _y=1);
void setX(int _x);
int getX() const;
void setY(int _y);
int getY() const;
friend ostream &operator<<(ostream &, const Ponto&);
private:
int x;
int y;
};
class Circulo {
public:
Circulo(int _x=1, int _y=1, double raio=1);
bool setRaio(double _raio);
double getRaio() const;
double getDiametro() const;
double getCircunferencia() const;
double getArea() const;
Ponto getPonto() const;
void setX(int _x);
void setY(int _y);
friend ostream &operator<<(ostream &, const Circulo&);
private:
double raio;
Ponto p;
};
class Cilindro {
public:
Cilindro(int _x=1, int _y=1, double _raio=1, double _altura=1);
Cilindro(Ponto _p, double _altura=1);
bool setAltura(double _altura);
double getAltura() const;
double getVolume() const;
Circulo getCirculo() const;
bool setRaio(double _raio);
void setX(int _x);
void setY(int _y);
friend ostream &operator<<(ostream &, const Cilindro&);
private:
double altura;
Circulo c;
};
ostream& operator<<(ostream &saida, const Ponto& p) {
saida << "Ponto: " << endl << "\t(" << p.getX() << ", " << p.getY() << ")" << endl;
return saida;
}
ostream& operator<<(ostream &saida, const Circulo& c) {
saida << "Circulo:" << endl << "\t(" << c.getPonto().getX() << ", " << c.getPonto().getY() << ")" <<
endl << "\tRaio: " << c.getRaio() << endl
<< "\tArea: " << c.getArea() << endl << "\tDiametro: " << c.getDiametro()
<< endl << "\tCircunferencia: " << c.getCircunferencia() << endl;
return saida;
}
ostream& operator<<(ostream &saida, const Cilindro& cl) {
saida << "Cilindro:" << endl << "\t(" << cl.getCirculo().getPonto().getX() << ", " << cl.getCirculo().getPonto().getY() << ")" << endl << "\tAltura: " << cl.getAltura()
<< endl << "\tVolume: " << cl.getVolume() << endl;
return saida;
}
Ponto::Ponto(int _x, int _y) {
setX(_x);
setY(_y);
}
void Ponto::setX(int _x) {
x = _x;
}
void Ponto::setY(int _y) {
y = _y;
}
int Ponto::getX() const {
return x;
}
int Ponto::getY() const {
return y;
}
Circulo::Circulo(int _x, int _y, double _raio) {
this->p = Ponto(_x, _y);
setRaio(_raio);
}
bool Circulo::setRaio(double _raio) {
if (_raio > 0) {
raio = _raio;
return true;
}
else {
return false;
}
}
double Circulo::getRaio() const {
return raio;
}
double Circulo::getDiametro() const {
return 2*getRaio();
}
double Circulo::getCircunferencia() const {
return 3.14*getDiametro();
}
double Circulo::getArea() const {
return 3.14*getRaio()*getRaio();
}
Ponto Circulo::getPonto() const {
return this->p;
}
void Circulo::setX(int _x) {
this->p.setX(_x);
}
void Circulo::setY(int _y) {
this->p.setY(_y);
}
Cilindro::Cilindro(int _x, int _y, double _raio, double _altura) {
this->c = Circulo(_x, _y, _raio);
setAltura(_altura);
}
bool Cilindro::setAltura(double _altura) {
if (_altura > 0) {
altura = _altura;
return true;
}
else {
return false;
}
}
double Cilindro::getAltura() const {
return altura;
}
double Cilindro::getVolume() const {
return 3.14*getCirculo().getRaio()*getCirculo().getRaio()*getAltura();
}
Circulo Cilindro::getCirculo() const {
return this->c;
}
bool Cilindro::setRaio(double _raio) {
return this->c.setRaio(_raio);
}
void Cilindro::setX(int _x) {
this->c.setX(_x);
}
void Cilindro::setY(int _y) {
this->c.setY(_y);
}
int main () {
Ponto p1(2, 5);
cout << p1 << endl;
p1.setX(1);
p1.setY(3);
cout << p1 << endl;
Circulo c1(1, 4, 2);
cout << c1 << endl;
c1.setX(3);
c1.setY(2);
c1.setRaio(6);
cout << c1 << endl;
Cilindro cl1(2, 3, 4, 5);
cout << cl1 << endl;
cl1.setX(1);
cl1.setY(2);
cl1.setRaio(3);
cl1.setAltura(4);
cout << cl1 << endl;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment