-
명품 C++ 4장 11번C++ 2018. 10. 30. 01:16
11. 다음은 커피자판기로 작동하는 프로그램을 만들기 위해 필요한 두 클래스이다.
class CoffeeVendingMachine { // 커피자판기를 표현하는 클래스Container tong[3]; // tong[0]는 커피, tong[1]은 물, tong[2]는 설탕통을 나타냄void fill(); // 3개의 통을 모두 10으로 채움void selectEspresso(); // 에스프레소를 선택한 경우, 커피 1, 물 1 소모void selectAmericano(); // 아메리카노를 선택한 경우, 커피 1, 물 2 소모void selectsugarCoffee(); // 설탕커피를 선택한 경우, 커피 1, 물 2 소모, 설탕 1 소모void show(); // 현재 커피, 물 설탕의 잔량 출력public:void run(); // 커피 자판기 작동int sw;};class Container { // 통 하나를 나타내는 클래스int size; // 현재 저장 량, 최대 저장량은 10public:Container() { size = 10; }void fill(); // 최대량(10)으로 채우기void consume(); // 1만큼 소비하기int getSize(); // 현재 크기 리턴};다음과 같이 실행되도록 main() 함수와 CoffeeVendingMachine, Container를 완성하라. 만일 커피, 물, 설탕 중 잔량이 하나라도 부족해 커피를 제공할 수 없는 경우 '원료가 부족합니다.'를 출력하라
소스코드
#include <iostream>using namespace std;class Container { // 통 하나를 나타내는 클래스int size; // 현재 저장 량, 최대 저장량은 10public:Container() { size = 10; }void fill(); // 최대량(10)으로 채우기void consume(); // 1만큼 소비하기int getSize(); // 현재 크기 리턴};void Container::fill() {size = 10;}void Container::consume() {--size;}int Container::getSize() {return size;}class CoffeeVendingMachine { // 커피자판기를 표현하는 클래스Container tong[3]; // tong[0]는 커피, tong[1]은 물, tong[2]는 설탕통을 나타냄void fill(); // 3개의 통을 모두 10으로 채움void selectEspresso(); // 에스프레소를 선택한 경우, 커피 1, 물 1 소모void selectAmericano(); // 아메리카노를 선택한 경우, 커피 1, 물 2 소모void selectsugarCoffee(); // 설탕커피를 선택한 경우, 커피 1, 물 2 소모, 설탕 1 소모void show(); // 현재 커피, 물 설탕의 잔량 출력public:void run(); // 커피 자판기 작동int sw;};void CoffeeVendingMachine::fill() {for (int i = 0; i <3; ++i)tong[i].fill();sw = 0;}void CoffeeVendingMachine::selectEspresso() {for (int i = 0; i <3; ++i) { //원료가 충분한가 확인if (tong[i].getSize() == 0) {sw = 1;break;}}if (sw == 1) {cout << "원료가 부족합니다" << endl;}else {tong[0].consume(); tong[1].consume();sw = 0;cout << "에스프레소 드세요" << endl;}}void CoffeeVendingMachine::selectAmericano() {for (int i = 0; i <3; ++i) { //원료가 충분한가 확인if (tong[i].getSize() == 0) {sw = 1;break;}}if (sw == 1) {cout << "원료가 부족합니다" << endl;}else {tong[0].consume(); tong[1].consume(); tong[1].consume();sw = 0;cout << "아메리카노 드세요" << endl;}}void CoffeeVendingMachine::selectsugarCoffee() {for (int i = 0; i <3; ++i) { //원료가 충분한가 확인if (tong[i].getSize() == 0) {sw = 1;break;}}if (sw == 1) {cout << "원료가 부족합니다" << endl;}else {tong[0].consume(); tong[1].consume(); tong[1].consume(); tong[2].consume();sw = 0;cout << "설탕커피 드세요" << endl;}}void CoffeeVendingMachine::show() {cout << "커피 " << tong[0].getSize() << ",물 " << tong[1].getSize() << ",설탕 " << tong[2].getSize() << endl;}void CoffeeVendingMachine::run() {int num;cout << "****** 커피자판기를 작동합니다. *****" << endl;for (;;) {cout << "메뉴를 눌러주세요(1:에스프레소, 2:아메리카노, 3:설탕커피, 4:잔량보기, 5:채우기)>>";cin >> num;switch (num){case 1:selectEspresso();break;case 2:selectAmericano();break;case 3:selectsugarCoffee();break;case 4:show();break;case 5:fill();show();break;default:cout << "입력오류";break;}}}int main() {CoffeeVendingMachine p;p.run();}실행결과
sw는 원료가 비었나를 확인하는 변수입니다.
'C++' 카테고리의 다른 글
명품 C++ 4장 13번 (0) 2018.10.30 명품 C++ 4장 12번 (0) 2018.10.30 명품 C++ 4장 10번 (0) 2018.10.30 명품 C++ 4장 9번 (0) 2018.10.30 명품 C++ 4장 8번 (1) 2018.10.30