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