Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "circulo.h"
- using namespace std;
- #define PI 3.1415
- #define MAXP 100000
- int menu();
- class Ponto
- {
- protected:
- double x, y, raio, altura;
- public:
- Ponto(double x = 0, double y = 0, double r = 0, double a = 0): x{x}, y{y}, raio{r}, altura{a} { }
- ~Ponto() {}
- virtual void read() { cin >> x >> y; }
- virtual void print() const { cout << "C(" << x << "," << y << ")"; }
- virtual double area() { return 0; }
- virtual double volume() { return 0; }
- };
- class Circulo: public Ponto
- {
- public:
- Circulo(double x = 0, double y = 0, double raio = 0, double altura = 0): Ponto{x, y, raio, altura} {}
- ~Circulo() {}
- void read() { cin >> x >> y >> raio; }
- void print() const { Ponto::print(); cout << " RAIO = " << raio; }
- double area() { return PI*raio*raio; }
- double volume() { return 0; }
- };
- class Cilindro: public Circulo
- {
- public:
- Cilindro(double x = 0, double y = 0, double raio = 0, double altura = 0): Circulo{x, y, raio, altura} {}
- ~Cilindro() {}
- void read() { cin >> x >> y >> raio >> altura; }
- void print() const { Circulo::print(); cout << " ALTURA = " << altura; }
- double area() { return (2*Circulo::area())+ 2*PI*raio*altura ; }
- double volume() { return (Circulo::area())*altura; }
- };
- istream& operator>>(istream& input, Ponto& in){
- in.read();
- return input;
- }
- ostream& operator<<(ostream& output, const Ponto& out){
- out.print();
- return output;
- }
- int menu(){
- int op;
- cout << "1 - Presidente" << endl;
- cout << "2 - Governador" << endl;
- cout << "3 - Prefeito" << endl;
- cout << "0 - Sair" << endl;
- cout << "Digite opcao desejada para inserir: ";
- while(cin >> op){
- if(op == 0 || op == 1 || op == 2 || op == 3)
- return op;
- cout << "Digite uma das opcoes disponiveis" << endl;
- }
- }
- int main(){
- int qtd;
- cout << "Informe quantidade formas: ";
- cin >> qtd; cout << endl;
- try{
- if(qtd < 0 || qtd >= MAXP)
- throw "Please, input only valid numbers\n";
- }catch( const char *c ){
- cout << endl << "Invalid number!" << endl << c;
- }
- Ponto* vet[ MAXP ];
- cout << "Escolha " << qtd << " vezes qual o tipo que deseja criar" << endl;
- for(int j = 0; j < qtd; j++){
- cout << endl;
- int op = menu();
- if(op == 0)
- return 0;
- switch( op ){
- case 1:
- vet[ j ] = new Ponto; cout << endl;
- cin >> *vet[ j ];
- break;
- case 2:
- vet[ j ] = new Circulo; cout << endl;
- cin >> *vet[ j ];
- break;
- case 3:
- vet[ j ] = new Cilindro; cout << endl;
- cin >> *vet[ j ];
- break;
- }
- }
- cout << endl << "### MOSTRAR VETOR! ###" << endl << endl;
- for(int i = 0; i < qtd; i++)
- cout << *vet[ i ] << endl;
- cout << endl << "#### FIM ####" << endl << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement