C++에서 두 수에 대한 덧셈, 뺄셈, 곱셈, 나눗셈 연산을 수행하는 간단한 계산기 프로그램을 살펴보겠습니다. 이 프로그램은 switch...case 문을 사용하여 입력된 연산자에 따라 알맞은 연산을 선택하는 방식으로 동작합니다.
전체 예제 코드
#include <iostream>
using namespace std;
void calculator(int a, int b, char op) {
switch (op) {
case '+': {
cout<<"Sum of "<<a<<" and "<<b<<" is "<<a+b<<endl;
break;
}
case '-': {
cout<<"Difference of "<<a<<" and "<<b<<" is "<<a-b<<endl;
break;
}
case '*': {
cout<<"Product of "<<a<<" and "<<b<<" is "<<a*b<<endl;
break;
}
case '/': {
cout<<"Division of "<<a<<" and "<<b<<" is "<<a/b<<endl;
break;
}
default:
cout<<"Invalid Input"<<endl;
}
}
int main() {
calculator(5,4,'+');
calculator(10,3,'-');
calculator(3,2,'*');
calculator(20,5,'/');
calculator(5,2,'?');
return 0;
}
실행 결과
Sum of 5 and 4 is 9 Difference of 10 and 3 is 7 Product of 3 and 2 is 6 Division of 20 and 5 is 4 Invalid Input
코드 상세 설명
1. calculator() 함수 선언
위 프로그램의 핵심인 calculator() 함수는 두 숫자에 대해 더하기, 빼기, 곱하기, 나누기를 수행하며, 이 모든 분기 처리는 switch 문으로 이루어집니다. 함수는 총 세 개의 매개변수를 받습니다. 연산을 수행할 두 개의 정수와, 어떤 연산을 수행할지 나타내는 문자(char)입니다.
void calculator(int a, int b, char op)
2. 덧셈 처리 (case '+')
첫 번째 case는 연산자가 '+'일 때 실행되며, 두 수를 더한 합계를 화면에 출력합니다.
case '+': {
cout<<"Sum of "<<a<<" and "<<b<<" is "<<a+b<<endl;
break;
}
3. 뺄셈 처리 (case '-')
두 번째 case는 연산자가 '-'일 때 실행되며, 두 수의 차를 계산하여 출력합니다.
case '-': {
cout<<"Difference of "<<a<<" and "<<b<<" is "<<a-b<<endl;
break;
}
4. 곱셈 처리 (case '*')
세 번째 case는 연산자가 '*'일 때 실행되며, 두 수의 곱을 계산하여 출력합니다.
case '*': {
cout<<"Product of "<<a<<" and "<<b<<" is "<<a*b<<endl;
break;
}
5. 나눗셈 처리 (case '/')
네 번째 case는 연산자가 '/'일 때 실행되며, 두 수를 나눈 결과를 출력합니다. 참고로 두 피연산자가 모두 정수이므로 결과 역시 정수(소수점 이하 버림)로 표시됩니다.
case '/': {
cout<<"Division of "<<a<<" and "<<b<<" is "<<a/b<<endl;
break;
}
6. 기본(default) 케이스 처리
default 케이스는 위 네 가지 연산자 외에 유효하지 않은 연산자가 전달되었을 때 실행되어 오류 메시지를 출력합니다.
default: cout<<"Invalid Input"<<endl;
7. main() 함수에서의 호출
main() 함수에서는 서로 다른 피연산자와 연산자를 조합하여 calculator() 함수를 여러 번 호출합니다. 마지막 호출에서는 유효하지 않은 연산자 '?'를 전달하여 default 케이스가 실행되는 과정도 확인할 수 있습니다.
calculator(5,4,'+'); calculator(10,3,'-'); calculator(3,2,'*'); calculator(20,5,'/'); calculator(5,2,'?');
참고: 실무에서 개선할 수 있는 부분
이 계산기를 실제 프로젝트로 확장한다면 다음 사항을 고려하는 것이 좋습니다.
- 0으로 나누기 방지: 나눗셈을 수행하기 전에 두 번째 피연산자가 0인지 검사하면 런타임 오류를 예방할 수 있습니다.
- 실수 연산 지원: 매개변수 타입을
double로 변경하면 소수점 결과까지 정확하게 표현할 수 있습니다. - 사용자 입력 처리:
cin을 활용해 사용자로부터 직접 숫자와 연산자를 입력받도록 확장할 수 있습니다.