자료구조(알고리즘) 스택을 이용한 계산기(후위연산 postfix), 우선순위 연산 with C++
- 최초 등록일
- 2011.02.23
- 최종 저작일
- 2010.04
- 14페이지/ 압축파일
- 가격 3,000원
소개글
□ 문제개요
* 연산자 우선순위에 따른 완벽한 계산기 구현
괄호가 최우선 * / + -
○ 스택을 이용하여 다양한 연산을 한다.
○ 계산식을 string 으로 입력 받아 파싱 하도록 한다.
○ 예외처리에 충실 하도록 한다.
○ 연산자에 우선순위에 따라 계산한다.
○ 연산자 오버로딩과 가상함수를 사용해 본다.
목차
□ 문제의 개요
□ 문제 분석 및 알고리즘
□ 소스 및 주석
□ 실행 화면 CAPTURE
□ 느낀점
본문내용
○ 알고리즘
- 사용자가 입력한 식에서 연산자와 숫자를 구분하기 위해 파싱을 한다.(오류체크 포함)
- 사용자가 입력 한 식을 후위식으로 바꾸기 위해 스택을 이용한다.
a. 연산자를 저장하기 위한 스택과 , 숫자를 저장하기 위한 스택
- 이전에 있던 연산자보다 우선순위가 높은 연산자가 push 되면 그냥 누르고 스택의 TOP으로 들어간다.
- 만약 이전의 연산자보다 우선순위가 높으면 pop을 하고 그 아래의 연산자와 다시 비교한다.
- 역시 또 우선순위가 높으면 pop을 한다. (pop한 연산자들은 이후에 다시 넣어주어야 하므로 기억한다.
- 다음 연산자의 우선순위가 push 된 연산자보다 낮다면 이제야 누르고 들어간다.
- 지금까지 pop 했던 연산자들을 다시 스택에 넣어준다.
- 만약 비교되는 연산자들의 우선순위가 같다면 이전의 연산자를 pop하고 현재 push 된 연산자를 push
한 후 다시 pop된 연산자를 push 하여, 자리를 바꾸어 준다.
- 연산자의 우선순위들은 #define 으로 정의하도록 한다.
- 연산자 스택과, 숫자의 스택을 이용해서 후위 연산식을 만든다.
a. ` ) ` 닫힘 괄호가 push 되면 ‘ ( ’ 열림괄호가 나올때까지 모든 연산자를 pop하고 ` ( ` 열림괄호를
제거한다.
* 코드는 본문에 완벽하게 있읍니다.
참고 자료
없음
압축파일 내 파일목록
후위계산식.hwp
controller.cpp
controller.h
stack.cpp
stack.h
stack_op.cpp