EXERCÍCIO 1 - FUNÇÕES DE E/S EM C++ TESTE O CÓDIGO ABAIXO: #include <iostream> main() { int i; double d; long l; cout << "Digite um inteiro: "; cin >> i; cout << "Digite um double: "; cin >> d; cout << "Digite um long: "; cin >> l; cout << " inteiro:"<< i << " double:" << d << " long:" << l; cin>>i; } 1 EXERCÍCIO 2 Crie uma classe círculo com operações: deslocar // desloca o circulo em x e y aumentar // aumenta o raio do circulo Imprimir // imprime a informações a respeito do círculo A classe deve manter as informações necessárias para definir um círculo 2 EXERCICIO 2 – CRIE UMA CLASSE CÍRCULO COM OPERAÇÕES DESLOCAR, AUMENTAR, IMPRIMIR #include <iostream> class Circulo { public: int x,y,raio; void deslocar(int dx,int dy); void aumentar(int dR); void imprimir(); }; void Circulo::imprimir() { cout<<"Circulo de centro em ("<<x<<","<<y<<") e raio="<<raio; } void Circulo::deslocar(int dx,int dy) { x=x+dx; y=y+dy; } void Circulo::aumentar(int dR) { raio=raio+dR; } 3 EXERCÍCIO – 2 – USO DE OBJETO CÍRCULO void main() { Circulo c1; c1.x=50; c1.y=50; c1.raio=20; c1.imprimir(); c1.deslocar(5,5); c1.imprimir(); c1.aumentar(3); c1.imprimir(); 4 } EXERCÍCIO - 3 Criar um construtor para classe Círculo com dados iniciais Tornar os atributos privativos Criar uma classe Figura com as mesmas funções membro de círculo, porém todas abstratas e marcar circulo como derivado de figura Criar uma classe Quadrado derivada da classe Figura 5 class Figura { public: virtual void deslocar(int dx,int dy)=0; virtual void aumentar(int dR)=0; virtual void imprimir()=0; }; class Quadrado :public Figura{ private: int x,y,lado; public: void deslocar(int dx,int dy); void aumentar(int dR); void imprimir(); Quadrado(int x1,int y1,int r1); }; 6 Quadrado::Quadrado(int x1,int y1,int l) { x=x1; y=y1; lado=l; } void Quadrado::imprimir() { cout<<"Quadrado de canto superior esquerdo em ("<<x<<","<<y<<") e lado="<<lado<<endl; } void Quadrado::deslocar(int dx,int dy) { x=x+dx; y=y+dy; } void Quadrado::aumentar(int dR) { lado=lado+dR; } 7 EXERCÍCIO - 4 Criar uma classe que implemente uma Pilha para Figura com as seguintes operações: int push(Figura* x); //insere x no topo Figura* pop(); // retira o elemento topo Figura* top(); // retorna o topo sem desempilhá-lo int size(); //retorna o tamanho atual da pilha bool isEmpty(); // verifica se a pilha está vazia 8 class Pilha { private: Figura **figuras; int topo; static int TAM=100; public: int push(Figura* x); //insere x no topo Figura* pop(); // retira o elemento topo Figura* top(); // retorna o topo sem desempilhá-lo int size(); //retorna o tamanho atual da pilha bool isEmpty(); // verifica se a pilha está vazia //construtor e destrutor Pilha(); ~Pilha(); }; 9 int Pilha::size() { return topo+1; } bool Pilha::isEmpty() {return (topo<0); } Figura* Pilha::top() { if (isEmpty()) return NULL; return figuras[topo]; } Figura* Pilha::pop() { if (isEmpty()) return NULL; return figuras[topo--]; } 10 int Pilha::push(Figura* x) { if (size() == TAM) return -1; figuras[++topo]=x; return 1; } Pilha::Pilha() { figuras=new Figura*[TAM]; } Pilha::~Pilha() { delete figuras; } 11 UTILIZAÇÃO DA PILHA void main() { Pilha p; Figura *f; p.push(new Quadrado(50,50,30)); p.push(new Circulo(10,10,5)); p.push(new Quadrado(20,20,10)); f=p.pop(); f->imprimir(); delete f; f=p.pop(); f->imprimir(); delete f; f=p.pop(); f->imprimir(); delete f; } 12 RESULTADO DA UTILIZAÇÃO DA PILHA Quadrado de canto superior esquerdo em (20,20) e lado=10 Circulo de centro em (10,10) e raio=5 Quadrado de canto superior esquerdo em (50,50) e lado=30 13