[문제]
아래의 코드에서 사과의 구매를 목적으로 0보다 작은 수를 전달할 수 없었다. 이 제약사항을 항상 만족시킬 수 있도록 코드를 변경하고 안정성을 높일 수 있도록 일부 함수를 const로 선언하라.
#include<iostream>
using namespace std;
class FruitSeller
{
private:
int APPLE_PRICE;
int numOfApples;
int 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;
numOfApples -= num;
myMoney += money;
return num;
}
void ShowSaleResult()
{
cout << "남은 사과: " << numOfApples << endl;
cout << "판매 수익: " << myMoney << endl << endl;
}
};
class FruitBuyer
{
private:
int myMoney;
int numOfApples;
public:
void InitMembers(int money)
{
myMoney = money;
numOfApples = 0;
}
void BuyApples(FruitSeller& seller, int money)
{
numOfApples += seller.SaleApples(money);
myMoney -= money;
}
void ShowBuyResult()
{
cout << "현재 잔액: " << myMoney << endl;
cout << "사과 개수: " << numOfApples << endl;
}
};
int main(void)
{
FruitSeller seller;
seller.InitMembers(1000, 20, 0);
FruitBuyer buyer;
buyer.InitMembers(5000);
buyer.BuyApples(seller, 2000);
cout << "과일 판매자의 현황" << endl;
seller.ShowSaleResult();
cout << "과일 구매자의 현황" << endl;
buyer.ShowBuyResult();
return 0;
}
[코드]
#include<iostream>
using namespace std;
class FruitSeller
{
private:
int APPLE_PRICE;
int numOfApples;
int myMoney;
public:
void InitMembers(int price, int num, int money)
{
APPLE_PRICE = price;
numOfApples = num;
myMoney = money;
}
int SaleApples(int money)
{
if (money < 0)
{
cout << "잘못된 정보가 전달되어 판매를 취소합니다." << endl;
return 0;
}
int num = money / APPLE_PRICE;
numOfApples -= num;
myMoney += money;
return num;
}
void ShowSaleResult() const
{
cout << "남은 사과: " << numOfApples << endl;
cout << "판매 수익: " << myMoney << endl << endl;
}
};
class FruitBuyer
{
private:
int myMoney;
int numOfApples;
public:
void InitMembers(int money)
{
myMoney = money;
numOfApples = 0;
}
void BuyApples(FruitSeller& seller, int money)
{
if (money < 0)
{
cout << "잘못된 정보가 전달되어 구매를 취소합니다." << endl;
return;
}
numOfApples += seller.SaleApples(money);
myMoney -= money;
}
void ShowBuyResult() const
{
cout << "현재 잔액: " << myMoney << endl;
cout << "사과 개수: " << numOfApples << endl;
}
};
int main(void)
{
FruitSeller seller;
seller.InitMembers(1000, 20, 0);
FruitBuyer buyer;
buyer.InitMembers(5000);
buyer.BuyApples(seller, -20);
cout << "과일 판매자의 현황" << endl;
seller.ShowSaleResult();
cout << "과일 구매자의 현황" << endl;
buyer.ShowBuyResult();
return 0;
}
<참고>
윤성우의 열혈 C++ 프로그래밍
'C++ 언어 > 연습문제' 카테고리의 다른 글
C++ 언어 연습문제17 (0) | 2022.10.19 |
---|---|
C++ 언어 연습문제16 (0) | 2022.10.18 |
C++ 언어 연습문제14 (0) | 2022.09.30 |
C++ 언어 연습문제13 (0) | 2022.09.28 |
C++ 언어 연습문제12 (0) | 2022.09.27 |