계산기 : 수식을 입력받아 계산하여 출력한다

계산기를 만들려고 할때의 데이터들로 순회구조를 변환해 본다

operator +,-,*,/ 만 가능하다고 가정(사칙연산)

Operand : 연산자 양쪽에 있는 자료형

이때의 Operand 는 정수만 가능하다고 가정

* 중위 표기법 (Infix Notation) A + B

- 우선순위를 위해 괄호를 사용해야 함

*후위 표기법(Postfix Notation):

수식을 계산하기 위한 알고리즘이 단순!

- 괄호를 쓰지 않아도 연산 가능

AB+

*전위 표기법 (Prefix Notation)

- Operator 가 두 Operand 앞에 있음

+AB

중위를 후위 표기법으로 알고리즘을 풀기 위해 중위로된 식을 후위 표기법으로 변환 해야 한다

the way that 1. 중위 표기법에서 괄호가 씌워져 있는 경우에만

조건 A+B*C 에 대한 연산이 완전한 괄호로 되어 있어야 한다

ex) (A+(B*C))

알고리즘( 결과 저장소는 String 이라 가정 )

1. '(' 문자는 무시한다

2. Operand(숫자) 는 그대로 결과저장소에 추가( += )

-하나의 숫자(항) 이 입력되면 구분하기 위해 ' ' 을 추가로 입력해 준다

3. Operator(연산자) 는 Stack 에 PUsh 한다

- 저장소에 연산자를 저장할때 여산자와 구분을 하기 위해서 스택에서 빼오 연산자를 저장소에 넣은 후 ' ' 을 하나 연달아 넣어준다,

4. ')' 를 만나면 Stack 에서 Pop 하여 결과저장소에 추가 ( += )

the way that 2. 중위 표기법에서 괄호가 없는 경우

먼저 연산자 우선 순위를 정해야 한다

'(' : 0

+,- : 1

*,/ : 2

로 우선 순위를 매기고

반응형

+ Recent posts