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 | #include <iostream> #include <string> using namespace std; class Printer { string model; string manufacturer; int printedCount; int availableCount; public: Printer(string model, string manufacturer, int availableCount) { this->model = model; this->manufacturer = manufacturer; this->availableCount = availableCount; } string getModel() { return model; } string getManufacturer() { return manufacturer; } int getAvailableCount() { return availableCount; } virtual void show() = 0; bool print(int pages); }; bool Printer::print(int pages) { printedCount = pages; if (availableCount < printedCount) { cout << "용지가 부족하여 프린트할 수 없습니다.\n"; return false; } else { availableCount -= printedCount; return true; } } class Ink :public Printer { int availableInk; public: Ink(string model, string manufacturer, int availableCount, int availableInk) :Printer(model, manufacturer, availableCount) { this->availableInk = availableInk; } void show() { cout << "잉크젯 : " << getModel() << " ," << getManufacturer() << " ,남은 종이 " << getAvailableCount() << ", 남은 잉크 " << availableInk << '\n'; } void printInkJet(int pages) { if (print(pages)) { if (availableInk > pages) { availableInk -= pages; cout << "프린트하였습니다.\n"; } else { cout << "잉크가 부족하여 프린트할 수 없습니다\n"; } } } }; class Laser :public Printer { int availableToner; public: Laser(string model, string manufacturer, int availableCount, int availableToner) :Printer(model, manufacturer, availableCount) { this->availableToner = availableToner; } void show() { cout << "잉크젯 : " << getModel() << " ," << getManufacturer() << " ,남은 종이 " << getAvailableCount() << ", 남은 토너 " << availableToner << '\n'; } void printLaser(int pages) { if (print(pages)) { if (availableToner > pages) { availableToner -= pages; cout << "프린트하였습니다.\n"; } else { cout << "토너가 부족하여 프린트할 수 없습니다\n"; } } } }; int main() { int printSelect, pages; char con; Ink *I = new Ink("Officejet V40", "HP", 5, 10); Laser *L = new Laser("SCX-6x45", "삼성전자", 3, 20); cout << "현재 작동중인 2 대의 프린터는 아래와 같다\n"; I->show(); L->show(); cout << '\n'; while (1) { cout << "프린터(1:잉크젯, 2:레이저)와 매수 입력>>"; cin >> printSelect >> pages; switch (printSelect) { case 1: I->printInkJet(pages); I->show(); L->show(); break; case 2: L->printLaser(pages); I->show(); L->show(); break; default: cout << "잘못된 선택입니다\n"; break; } cout << "계속 프린트 하시겠습니까(y/n)>>"; cin >> con; cout << '\n'; if (con == 'y') continue; else if (con == 'n') break; cin.ignore(); } } | cs |
'Programming > 명품 C++ Programming' 카테고리의 다른 글
명품 C++ Programming 실습문제 8장 7번 (0) | 2018.06.21 |
---|---|
명품 C++ Programming 실습문제 8장 6번 (0) | 2018.06.19 |
명품 C++ Programming 실습문제 8장 5번 (0) | 2018.06.19 |
명품 C++ Programming 실습문제 8장 4번 (0) | 2018.06.19 |
명품 C++ Programming 실습문제 8장 3번 (0) | 2018.06.19 |