검색어 입력폼
평가점수A

자료구조(알고리즘) 스택을 이용한 계산기(후위연산 postfix), 우선순위 연산 with C++

저작시기 2010.04 |등록일 2011.02.23 | 최종수정일 2014.08.08 파일확장자압축파일 (zip) | 14페이지 | 가격 3,000원

소개글

□ 문제개요
* 연산자 우선순위에 따른 완벽한 계산기 구현
괄호가 최우선 * / + -
○ 스택을 이용하여 다양한 연산을 한다.
○ 계산식을 string 으로 입력 받아 파싱 하도록 한다.
○ 예외처리에 충실 하도록 한다.
○ 연산자에 우선순위에 따라 계산한다.
○ 연산자 오버로딩과 가상함수를 사용해 본다.

목차

□ 문제의 개요
□ 문제 분석 및 알고리즘
□ 소스 및 주석
□ 실행 화면 CAPTURE
□ 느낀점

본문내용

○ 알고리즘
- 사용자가 입력한 식에서 연산자와 숫자를 구분하기 위해 파싱을 한다.(오류체크 포함)
- 사용자가 입력 한 식을 후위식으로 바꾸기 위해 스택을 이용한다.
a. 연산자를 저장하기 위한 스택과 , 숫자를 저장하기 위한 스택
- 이전에 있던 연산자보다 우선순위가 높은 연산자가 push 되면 그냥 누르고 스택의 TOP으로 들어간다.
- 만약 이전의 연산자보다 우선순위가 높으면 pop을 하고 그 아래의 연산자와 다시 비교한다.
- 역시 또 우선순위가 높으면 pop을 한다. (pop한 연산자들은 이후에 다시 넣어주어야 하므로 기억한다.
- 다음 연산자의 우선순위가 push 된 연산자보다 낮다면 이제야 누르고 들어간다.
- 지금까지 pop 했던 연산자들을 다시 스택에 넣어준다.
- 만약 비교되는 연산자들의 우선순위가 같다면 이전의 연산자를 pop하고 현재 push 된 연산자를 push
한 후 다시 pop된 연산자를 push 하여, 자리를 바꾸어 준다.
- 연산자의 우선순위들은 #define 으로 정의하도록 한다.
- 연산자 스택과, 숫자의 스택을 이용해서 후위 연산식을 만든다.
a. ` ) ` 닫힘 괄호가 push 되면 ‘ ( ’ 열림괄호가 나올때까지 모든 연산자를 pop하고 ` ( ` 열림괄호를
제거한다.

* 코드는 본문에 완벽하게 있읍니다.
다운로드 맨위로