728x90
기존 문제는 사과의 구매 목적으로 0보다 작은 수를 전달할 수 없고, 함수를 const로 선언하여 코드의 안정성을 높이는 것이었다.
기존대로 구현 후 문득 떠오른 생각은
만약 구매자의 돈이 엄청나게 많다면?
그래도 사과의 개수는 정해져 있으므로 판매자는 구매자의 돈 전부를 수익으로 낼 수 없다.
즉, 아무리 돈이 많아도 판매자가 얻을 수 있는 수익과 구매자가 지불할 금액은 정해져 있다.
이것까지 한 번 구현해보았다.
근데 이상하게 구현했을수도..?
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
|
#include <iostream>
using namespace std;
class FruitSeller{
private:
int APPLE_PRICE, numOfApples, myMoney;
public:
void InitMembers(int price, int num, int money){
APPLE_PRICE = price;
numOfApples = num;
myMoney = money;
}
int SaleApples(int money){
int num = money / APPLE_PRICE;
if(num>20){
num=20;
money = APPLE_PRICE * num;
}
numOfApples -= num;
myMoney += money;
return num;
}
bool check(){
if(numOfApples == 0){
return true;
}
else{
return false;
}
}
void ShowSalesResult() const{
cout << "남은 사과 : " << numOfApples << "\n";
cout << "판매 수익 : " << myMoney << "\n\n";
}
};
class FruitBuyer{
private:
int myMoney, numOfApples;
public:
void InitMembers(int money){
numOfApples = 0;
myMoney = money;
}
bool BuyApples(FruitSeller &seller, int money){
if(money<=0){
cout << "돈이 0 보다 적습니다.\n";
return false;
}
numOfApples += seller.SaleApples(money);
if(seller.check()){
myMoney=0;
}
else{
myMoney -= money;
}
return true;
}
void ShowBuyResult() const{
cout << "사과 개수 : " << numOfApples << "\n";
cout << "현재 잔액 : " << myMoney << "\n\n";
}
};
int main(){
FruitSeller seller;
seller.InitMembers(1000, 20, 0);
FruitBuyer buyer;
buyer.InitMembers(5000);
buyer.BuyApples(seller, 0);
// buyer.BuyApples(seller, 2000);
// buyer.BuyApples(seller, 40000);
cout << "과일 판매자의 현황" << "\n";
seller.ShowSalesResult();
cout << "과일 구매자의 현황" << "\n";
buyer.ShowBuyResult();
}
|
cs |
'Study > Object-Oriented' 카테고리의 다른 글
OOP - 2 (연산자 오버로딩, cast, exception, void*, fstream, template, 자료형 형식화) (0) | 2024.01.09 |
---|---|
배열포인터 (0) | 2022.06.13 |
포인터배열 (0) | 2022.06.13 |