//3. Crie uma classe denominada Elevador para armazenar as informações de um elevador dentro de um prédio.
//A classe deve armazenar o andar atual (0=térreo), total de andares no prédio, excluindo o térreo, capacidade do elevador, e quantas pessoas estão presentes nele.
//A classe deve também disponibilizar os seguintes métodos:
//inicializa: que deve receber como parâmetros: a capacidade do elevador e o total de andares no prédio (os elevadores sempre começam no térreo e vazios);
//entra: para acrescentar uma pessoa no elevador (só deve acrescentar se ainda houver espaço);
//sai: para remover uma pessoa do elevador (só deve remover se houver alguém dentro dele);
//sobe: para subir um andar (não deve subir se já estiver no último andar);
//desce: para descer um andar (não deve descer se já estiver no térreo);
//get....: métodos para obter cada um dos os dados armazenados.
#include <cstdlib>
#include <iostream>
using namespace std;
class elevador {
public:
elevador();
elevador(int, int);
int setInicializa(int, int);
int getEntra();
int setEntra(int);
int getSai();
int setSai(int);
int getSobe();
int setSobe(int);
int getDesce();
int setDesce(int);
private:
int capacidade;
int capacidadeTotal;
int andares;
int totalAndares;
int andarAtual;
};
elevador::elevador(int c, int a)
{
capacidade=c;
andarAtual=a;
}
int elevador::setInicializa(int c,int a)
{
capacidadeTotal=c;
andares=a;
capacidade=c;
return 0;
}
int elevador::getEntra()
{
return capacidade;
}
int elevador::setEntra(int c)
{
if(capacidade>0)
{
capacidade = capacidade-1;
cout << "O elevevador possui " << capacidadeTotal-capacidade << " passageiro(s) de um total de no maximo " << capacidadeTotal << " e esta no andar " << andarAtual << endl;
}
else
{
cout << "Capacidade do elevador excedida" << endl;
}
return capacidade;
}
int elevador::getSai()
{
return capacidade;
}
int elevador::setSai(int c)
{
if(capacidade<=capacidadeTotal)
{
capacidade = capacidade+1;
cout << "O elevevador possui " << capacidadeTotal-capacidade << " passageiro(s) de um total de no maximo " << capacidadeTotal << " e esta no andar " << andarAtual << endl;
}
else
{
cout << "O elevador esta vazio" << endl;
}
return capacidade;
}
int elevador::getSobe()
{
return andarAtual;
}
int elevador::setSobe(int a)
{
if(andarAtual<=totalAndares)
{
andarAtual = andarAtual+1;
cout << "O elevevador possui " << capacidadeTotal-capacidade << " passageiro(s) de um total de no maximo " << capacidadeTotal << " e esta no andar " << andarAtual << endl;
}
else
{
cout << "O elevador chegou ao ultimo andar" << endl;
}
return andarAtual;
}
int elevador::getDesce()
{
return andarAtual;
}
int elevador::setDesce(int a)
{
if(andarAtual>=0)
{
andarAtual = andarAtual-1;
cout << "O elevevador possui " << capacidadeTotal-capacidade << " passageiro(s) de um total de no maximo " << capacidadeTotal << " e esta no andar " << andarAtual << endl;
}
else
{
cout << "O elevador chegou ao terreo" << endl;
}
return andarAtual;
}
int main()
{
int var, c, a;
elevador e1(0, 0);
cout << "Informe o numero de andares do predio e a capacidade maxima do elevador" << endl;
cin >> a >> c;
e1.setInicializa(c, a);
do {
cout << "Informe qual ação do elevador:" << endl << "1. para entrar um passageiro" << endl << "2. para sair um passageiro" << endl << "3. para subir um andar" << endl << "4. para descer um andar" << endl << endl;
cin >> var;
if(var==1)
{
e1.setEntra(c);
}
if(var==2)
{
e1.setSai(c);
}
if(var==3)
{
e1.setSobe(a);
}
if(var==4)
{
e1.setDesce(a);
}
}while (var==1 || var==2 || var==3 || var==4);
system("PAUSE");
return EXIT_SUCCESS;
}