간단한 계산기 프로그램 작성
프로그램 개요
이번 실습에서는 기본적인 사칙연산을 수행하는 간단한 계산기 프로그램을 작성해보겠습니다.
이 프로그램을 통해 지금까지 학습한 C++의 기본 개념들을 실제로 적용해볼 수 있습니다.
프로그램의 주요 기능은 다음과 같습니다.
- 두 개의 숫자 입력 받기
- 연산자 입력 받기
+
,-
,*
,/
- 선택된 연산 수행
- 결과 출력
- 사용자 선택에 따라 프로그램 반복 실행
프로그램 설계
프로그램을 구현하기 전에 먼저 전체적인 구조를 설계해보겠습니다.
1. 사용자 입력
- 두 개의 숫자 (부동소수점 사용)
- 연산자 (문자)
2. 연산 수행
- switch 문을 사용하여 연산자에 따른 적절한 연산 수행
- 나눗셈의 경우 0으로 나누는 상황 처리
3. 결과 출력
- 계산 결과를 화면에 출력
4. 프로그램 반복
- 사용자가 원할 경우 새로운 계산 수행
코드 구현
이제 설계를 바탕으로 실제 C++ 코드를 작성해보겠습니다.
주요 개념 설명
1. #include <iostream>
- 입출력 기능을 사용하기 위한 헤더 파일입니다.
2. #include <limits>
- 숫자 타입의 한계값을 다루기 위한 헤더 파일입니다. 입력 버퍼를 지우는 데 사용됩니다.
3. double
타입 사용
- 부동소수점 연산을 위해
double
타입을 사용했습니다.
4. do-while
루프
- 최소한 한 번은 실행되는 루프로, 사용자가 계속할지 여부를 묻는 데 사용됩니다.
5. switch
문
- 연산자에 따라 다른 연산을 수행하기 위해 사용됩니다.
6. 예외 처리
- 0으로 나누는 경우와 잘못된 연산자 입력에 대한 처리를 포함했습니다.
7. 입력 유효성 검사
while
루프를 사용하여 올바른 숫자 입력을 보장합니다.
프로그램 실행 및 테스트
프로그램을 컴파일하고 실행한 후, 다음과 같은 테스트 케이스로 프로그램을 검증해보세요.
- 기본 연산 : 10 + 5, 20 - 7, 6 * 8, 15 / 3
- 소수점 연산 : 3.14 * 2, 10 / 3
- 예외 상황 : 5 / 0 (0으로 나누기)
- 잘못된 입력 : 문자 입력, 잘못된 연산자 입력
코드 개선 방안
이 기본 버전의 계산기는 잘 작동하지만, 다음과 같은 방법으로 개선할 수 있습니다.
- 함수 분리
- 연산 로직을 별도의 함수로 분리하여 코드의 가독성과 재사용성을 높입니다.
- 예외 처리 개선
- try-catch 문을 사용하여 더 체계적인 예외 처리를 구현합니다.
- 사용자 정의 함수 추가
- 제곱, 제곱근, 로그 등의 고급 연산을 추가합니다.
- 메모리 기능
- 이전 계산 결과를 저장하고 다음 계산에 사용할 수 있는 기능을 추가합니다.
연습 문제
- 현재 프로그램에 제곱 연산
^
을 추가해보세요. - 계산 기록을 저장하고 출력하는 기능을 구현해보세요.
- 연산 함수를 별도의 함수로 분리하여 프로그램을 리팩토링해보세요.
- 사용자가 입력한 수식을 문자열로 받아 계산하는 기능을 구현해보세요.
예 : "3 + 4 * 2"
- 프로그램에 메모리 기능을 추가해보세요.
M+
,M-
,MR
,MC
참고자료
- C++ 공식 문서 (입출력) : https://en.cppreference.com/w/cpp/io
- C++ 예외 처리 : https://en.cppreference.com/w/cpp/language/exceptions
- C++ <cmath> 라이브러리 : https://en.cppreference.com/w/cpp/header/cmath