Oct 19, 2010 at 4:04am UTC
The program is running, but when the program ends (when I write the wrong option or x in the switch) it prints more than he should and does not close the screen. Why is this happening?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
#include <iostream>
#include <conio.h>
using namespace std;
class Elevador {
int andarAtual, andaresTotal, capacidadeElevador, numeroPassageiros;
public :
Elevador() {andarAtual = 0; numeroPassageiros = 0;}
void iniciaElevador(int a, int b) {capacidadeElevador = a; andaresTotal = b;}
void saiElevador();
void entraElevador();
void sobeUmAndar();
void desceUmAndar();
void Menu();
void getMetodos();
};
void Elevador::Menu() {
cout << "ELEVADOR (" << andaresTotal << " andares)\n\n"
<< "Movimentos:\n\n"
<< "s: Subir um Andar\n"
<< "d: Descer um Andar\n"
<< "e: Entrar passageiro\n"
<< "f: Sair passageiro\n"
<< "x: FIM\n" << endl;
}
void Elevador:: getMetodos() {
char ordem;
cin >> ordem;
switch (ordem) {
case ('s' ):
sobeUmAndar();
getMetodos();
case ('d' ):
desceUmAndar();
getMetodos();
case ('e' ):
entraElevador();
getMetodos();
case ('f' ):
saiElevador();
getMetodos();
default :
cout << "O elevador acabou no " << andarAtual << "o andar e com " << numeroPassageiros << " passageiros." ;
break ;
};
}
void Elevador::sobeUmAndar() {
if (andarAtual != andaresTotal) {
andarAtual++;
cout << "Subindo do " << andarAtual - 1 << "* andar para o " << andarAtual << "o." << endl;
}
else
cout << "O elevador ja se encontra no ultimo andar." << endl;
}
void Elevador::desceUmAndar() {
if (andarAtual == 0)
cout << "O elevador ja se encontra no terreo." << endl;
else {
andarAtual--;
cout << "Descendo " << andarAtual + 1 << "* andar para o " << andarAtual << "o." << endl;
}
}
void Elevador::saiElevador() {
if (numeroPassageiros != 0) {
numeroPassageiros--;
cout << "Saindo um passageiro. " << numeroPassageiros << " no momento." << endl;
}
else
cout << "Nao ha nenhum passageiro para sair do elevador." << endl;
}
void Elevador::entraElevador() {
if (numeroPassageiros == capacidadeElevador)
cout << "Nao ha espaco para mais passageiros no elevador." << endl;
else {
numeroPassageiros++;
cout << "Entrando um passageiro. " << numeroPassageiros << " no momento." << endl;
}
}
int main () {
Elevador Eleva;
Eleva.iniciaElevador(8, 13);
Eleva.Menu();
Eleva.getMetodos();
getch();
return 0;
}
Last edited on Oct 19, 2010 at 4:12am UTC