파일들이 있는 디렉토리에서 아래의 다음 명령어 실행
gcc -Wall -c -g main.c
gcc -Wall -c -g calc.c
gcc -Wall -c -g stack.c
gcc -Wall -c -g queue.c
gcc -o calculator main.o calc.o stack.o queue.o
./calculator
make
./calculator
Infix notation으로 입력되는 다음과 같은 식을 계산하는 계산기를 작성한다. 반드시 C 언어로 작성해야 하며 윈도 우즈, 리눅스, 맥 환경에서 모두 컴파일 되고 동작되어야 한다.
계산기는 실행되면 식이 입력되기를 기다리고 식을 입력하고 [enter]를 입력하면 결과를 출력한다. 어떠한 식도 입 력하지 않은 상태에서 [enter]를 입력하면 프로그램이 종료된다.
구현해야 하는 계산기를 다음과 같은 연산자를 포함한다. 이 연산자들의 우선 순위는 수학에서 일반적인 우선순위 를 따른다.
- ‘+’ : 덧셈
- ‘-‘ : 뺄셈
- ‘*’ : 곱셈
- ‘/‘ : 나눗셈
- ‘%’ : 나머지 연산
- ‘^’ : 지수 승 연산
- ‘(‘, ‘)’ : 소괄호를 이용한 연산 우선 순위 결정
- log10 : 자연로그함수
- log2: 2를 밑으로 하는 로그함수
- 스택과 큐는 반드시 사용해야 하며 반드시 별도의 파일로 만들어져 있어야 한다. stack.c, stack.h, queue.c queue.h로 만들어져야 한다.
- 입력문은 수식이며 “bc”, “노래”, “!@#@$#@24”와 같은 수식과 관련없는 문자열은 입력을 거부해야 한다.
- 오류 메시지를 출력해야 한다.
- 단항 연산자를 허용한다.
- 입력 수식에 오류가 포함되었을 경우 이를 찾아서 오류를 출력해야 한다.
- 실수 처리는 허용되는 자리수 내에서 모두 처리하고 최종 출력은 소수점 2자리까지 한다 (소수점 3자리에서 반올림).
- 스택 ADT 구현
- 큐 ADT 구현
- 연산 우선순위 책정
- 괄호쌍 검사
- 입력 예외처리 (유효하지 않은 문자, 연산자 위치, %/0)
- 연산자기호(%, *, +, -, /, ^)와 (37, 42, 43, 45, 47, 94)의 구분
- makefile 작성
- 실수입력 허용
- 로그연산 추가 ('log2(), log10())
- 음수입력 허용 (단항 연산자)
- 예외처리 & 일부 로직 추가 및 수정