-
-
Save isagallerani/9a0e0687d4ba8056f1191e63d9aa22e3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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