c++ 7-3 과제

Jaewoong2·2020년 10월 5일
0

C++

목록 보기
5/13
#include <iostream>

class Counter {
public:
    Counter(const int MAX = 9999);
    void reset() { count = 0; };
    void incrFunction(const char length);
    bool overflow(int example) const;
    int getCountofCounter() const { return count; };
private:
    int MAXofCounter;
    int count;
    void incr1(const int numb) { count = count + numb * 1; };
    void incr10(const int numb) { count = count + numb * 10; };
    void incr100(const int numb) { count = count + numb * 100; };
    void incr1000(const int numb) { count = count + numb * 1000; };
};

Counter::Counter(const int MAX) : MAXofCounter(MAX), count(0) {};

bool Counter::overflow(int example) const {
    if(example == 0) {
        if(MAXofCounter < count) std::cout << "계산기 범위를 초과 하였습니다" << "\n";
        else std::cout << "계산기 범위를 초과 하지 않았습니다" << "\n";
    }
    return count > MAXofCounter;
}

void Counter::incrFunction(const char length) {
    int numb;
    std::cout << "1의 자리를 입력해주세요 1 ~ 9 " << "\n";
    std::cin >> numb;

    while(numb > 9 || numb < 0) {
        std::cout << "다시 입력 해주세요" << "\n";
        std::cin >> numb;
    }
    if(numb > 0 && numb < 10) {
        switch (length) {
            case 'a' :
                incr1(numb);
                break;
            case 's' :
                incr10(numb);
                break;
            case 'd' :
                incr100(numb);
                break;
            case 'f' :
                incr1000(numb);
                break;
            default :
                std::cout << "오류 발생" << "\n";
                break;
        }
    }
    std::cout << "현재 계산 :" << getCountofCounter() << std::endl;
};

int main() {
    Counter counter;
    char calculator;

    while (calculator != 'q') {
        std::cout << "명령어를 입력해주세요" << "\n"
                  << " '1' 의자리 : 'a' | '10' 의 자리 : 's' | '100' 의 자리 : 'd' | "
                     "'1000'의 자리 : 'f' | 초과검사 : 'o' | 종료 : 'q' " << "\n";
        std::cin >> calculator;

        if(calculator == 'a' || calculator == 's' || calculator == 'd' || calculator == 'f') {
            counter.incrFunction(calculator);
            if(counter.overflow(1)) {
                char reset;
                std::cout << "리셋 하시겠습니까 ? Y/N" << "\n";
                std::cin >> reset;
                if(reset == 'Y') counter.reset();
                else break;
            }
        } else if(calculator == 'o') {
            if(counter.overflow(0)) {
                char reset;
                std::cout << "리셋 하시겠습니까 ? Y/N" << "\n";
                std::cin >> reset;
                if(reset == 'Y') counter.reset();
                else break;
            }
        } else {
            std::cout << "잘못된 입력입니다.";
        }
    };
    std::cout << "계산기 종료" << std::endl;
    return 0;
};```
profile
DFF (Development For Fun)

0개의 댓글