-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathq028.cpp
More file actions
85 lines (69 loc) · 1.49 KB
/
q028.cpp
File metadata and controls
85 lines (69 loc) · 1.49 KB
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
#include <cstddef>
#include <iostream>
#include <ostream>
#include <string>
class Conta {
public:
float saldo;
};
using namespace std;
class Cliente {
private:
float saldo;
Conta *contas;
public:
string nome;
Cliente() {
cout << "Constuindo cliente sem nome" << endl;
this->saldo = 0;
this->nome = "Sem nome";
this->contas = 0;
}
Cliente(string nome) {
cout << "Constuindo cliente" << endl;
this->saldo = 0;
this->nome = nome;
this->contas = 0;
}
void abrirConta(int quantas) { this->contas = new Conta[quantas]; }
void depositar(float valor) {
if (valor <= 0) {
cout << "Só é permitido depósito positivo";
return;
}
this->saldo += valor;
}
void transferir(float quanto, Cliente *para_quem) {
// quanto não pode ser negativo
if (quanto <= 0) {
cout << "Depósitos só positivos" << endl;
return;
}
if (this->saldo >= quanto) {
this->saldo -= quanto;
para_quem->depositar(quanto);
} else {
cout << "Liso" << endl;
}
}
~Cliente() {
cout << "Fechando conta no banco central" << endl;
if (this->contas != 0) {
delete this->contas;
}
}
};
int main() {
Cliente ori("Oriosvaldo");
Cliente joa("Joaquina");
Cliente mari;
ori.abrirConta(1);
mari.abrirConta(1);
// depósito
ori.depositar(1000);
// transferir 500 de ori para joa
ori.transferir(500, &joa);
// transferir 600 de ori para mari
ori.transferir(600, &mari);
return 0;
}