C++

명품 C++ 2장 15번

NUMERO_K 2018. 10. 28. 02:59

15. 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%)의 정수 5칙 연산을 할 수 잇는 프로그램을 작성하라. 식은 다음과 같은 형식으로 입력된다. 정수와 연산자는 하나의 빈칸으로 분리된다.


소스코드


#include <iostream>
#include <cstring>
using namespace std;
int add(int a, int b);
int sub(int a, int b);
int mul(int a, int b);
int divi(int a, int b);
int rem(int a, int b);
int main() {
    char text[100];
    char *ptr = NULL;
    int left, right;
    for (;;) {
        cout << "? ";
        cin.getline(text, 100);
        left = atoi(strtok(text, " "));
        ptr = strtok(NULL, " ");
        right = atoi(strtok(NULL, " "));
        if (*ptr == '+') {
            cout << left << ' ' << ptr << ' ' << right << " = " << add(left, right) << endl;
        }
        else if (*ptr == '-') {
            cout << left << ' ' << ptr << ' ' << right << " = " << sub(left, right) << endl;
        }
        else if (*ptr == '*') {
            cout << left << ' ' << ptr << ' ' << right << " = " << mul(left, right) << endl;
        }
        else if (*ptr == '/') {
            cout << left << ' ' << ptr << ' ' << right << " = " << divi(left, right) << endl;
        }
        else if (*ptr == '%') {
            cout << left << ' ' << ptr << ' ' << right << " = " << rem(left, right) << endl;
        }
        else
            cout << "입력이상" << endl;
    }
}
int add(int a, int b) {
    return a + b;
}
int sub(int a, int b) {
    return a - b;
}
int mul(int a, int b) {
    return a * b;
}
int divi(int a, int b) {
    return a / b;
}
int rem(int a, int b) {
    return a % b;
}


실행결과


strtok(text," "); 는 공백전까지 문자열을 잘라 주는 함수입니다.

strtok(NULL," "); 는 다음 문자열을 자를 수 있게 해줍니다.

atoi는 문자열을 숫자로 바꿔주는 함수입니다.


연산자를 구분하여 함수를 호출 하였습니다.


strtok 함수에 대한 정보 출처 : https://dojang.io/mod/page/view.php?id=376