Code pour une machine d'une banque
Bonjour!
J'ai un problème avec un exercice. Il faut créer une classe Conta et deux sub-classes ContaP et ContaO (comptes d'une banque, la première avec des taux d'intêret et la seconde une compte ordinaire). Mon problème n'est pas tant les classes ContaP et ContaO mais quand j'éxécute le code, switch(j) ne se termine pas quand je tape 0 depuis d'avoir mon saldo(l'argent disponible) et continue dans le cas j=2 et j=3. Personne sais pourquoi? Merci.
Code:
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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
| #include <iostream>
using namespace std;
class Conta {
private:
char* nome;
public:
Conta(){nome = " ";}
Conta(char* n){nome = n;}
virtual char* get_nome() const {return nome;}
};
class ContaP : public Conta {
private:
double saldo;
public:
ContaP():Conta() {};
ContaP(char* n):Conta(n) {saldo = 300;}
virtual double get_saldo() const {return saldo;}
virtual void levantar(int m)
{saldo = saldo - m;}
virtual void depositar(int m)
{saldo = saldo + m;}
virtual void transferir(int m)
{saldo = saldo - m;}
};
class ContaO : public Conta {
private:
double saldo;
public:
ContaO():Conta() {};
ContaO(char* n):Conta(n) {saldo = 300;}
virtual double get_saldo() const {return saldo;}
virtual void levantar(double m)
{saldo = saldo - m;}
virtual void depositar(double m)
{saldo = saldo + m;}
};
int main() {
ContaP cp("Ferro");
ContaO co("Ferro");
int i = 1;
int j = 1;
int k = 1;
int l = 1;
while (i != 0) {
cout << " 1. Conta de poupança" << endl;
cout << " 2. Conta à ordem" << endl;
cout << " 0. Saída" << endl;
cin >> i;
if (i == 1)
{ cout << "Opções: " << endl;
cout << " 1. Saldo " << endl;
cout << " 2. Levantar " << endl;
cout << " 3. Transferência para a conta a ordem " << endl;
cout << " 0. Saída " << endl;
cin >> j;
switch (j) {
case 1: { cout << " Caro(a) " << cp.get_nome() << endl << endl;
cout << "O seu saldo da conta de poupança é actualmente ";
cout << cp.get_saldo() << " euros." << endl << endl;
cout << "Para continuar carregue numa tecla.";
cin >> k;}
case 2: { cout << " Caro (a) " << cp.get_nome() << endl << endl;
cout << "O montante a levantar: ";
cin >> k;
cp.levantar(k);
cout << " O seu saldo da conta poupança após ter levantado ";
cout << k << " euros é de " << cp.get_saldo() << " euros. " << endl << endl;
cout << "Para continuar carregue numa tecla.";
cin >> k;}
case 3: { cout << "Caro(a) " << cp.get_nome() << endl << endl;
cout << "O montante que pretende transferir para a sua conta à ordem: ";
cin >> k;
cp.transferir(k);
cout << "O seu saldo da conta poupança após ter transferido para a sua conta à ordem ";
cout << k << "euros é de " << cp.get_saldo() << " euros. " << endl << endl;}
case 0: { cout << " ***** OBRIGADO ***** " << endl;}
}
}
if (i == 2)
{ cout << "Opções: " << endl;
cout << " 1. Saldo " << endl;
cout << " 2. Levantar " << endl;
cout << " 0. Saída " << endl;
cin >> j;
switch (j) {
case 1: { cout << " Caro(a) " << cp.get_nome() << endl << endl;
cout << "O seu saldo da conta de poupança é actualmente ";
cout << cp.get_saldo() << " euros." << endl << endl;
cout << "Para continuar carregue numa tecla.";
cin >> k;}
case 2: { cout << " Caro (a) " << cp.get_nome() << endl << endl;
cout << "O montante a levantar: ";
cin >> k;
cp.levantar(k);
cout << " O seu saldo da conta poupança após ter levantado ";
cout << k << " euros é de " << cp.get_saldo() << " euros. " << endl << endl;
cout << "Para continuar carregue numa tecla.";
cin >> k;}
case 0: { cout << " ***** OBRIGADO ***** " << endl;}
}
}
}
}; |
[/list]