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 *= new Ink("Officejet V40""HP"510);
    Laser *= new Laser("SCX-6x45""삼성전자"320);
 
    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


+ Recent posts