소개글
5. [프로그래밍 프로젝트] 교재에서 사용된 연산자 외에 다음의 && , || , << , >> , <= . != , >= , < , > , == 연산자 들을 처리하는 함수 postfix를 재작성하라.
1) line by line으로 상세한 주석이 달려 있습니다.
컴파일 실행환경
vc++ 6.0
본문내용
include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FALSE 0
#define TRUE 1
#define MAX_STACK_SIZE 100 // 최대 스택 사이즈
#define MAX_EXPR_SIZE 100 // 수식 최대 사이즈
typedef enum {
LPAREN , RPAREN , PLUS, MINUS , TIMES, DIVIDE , MOD ,
LOGICAL_AND , LOGICAL_OR ,LEFT_SHIFT , RIGHT_SHIFT ,
EQUAL , NOT_EQAUL , LESS , GRATER , LESS_EQUAL , GRATER_EQUAL ,
EOS , OPERAND
} PRECEDENCE; // 우선순위
//////////////////////////////////////////////////////////////////////////
// Global Variable.
int stack[MAX_STACK_SIZE]; // 수식에 대한 스택
char expr[MAX_EXPR_SIZE]; // 수식을 저장하는 문자배열.
// in-stack precedence
const int isp[] = { 0,19,12,12,13,13,13,5,4,11,11,9,9,10,10,10,10,0 };
// incoming precedence
const int icp[] = { 20,19,12,12,13,13,13,5,4,11,11,9,9,10,10,10,10,0 };
/************************************************************************
* Function Prototype Declaration.
*************************************************************************/
int eval( void ); // 후위 표현 수식을 계산.
void stack_push( int* top , int item ); // 스택 푸쉬.
int stack_pop( int* top ); // 스택 팝
void postfix( void ); // 수식을 후위 표현으로 변환
// 후위표현으로 표현 된 수식중 연산자를 문자로 표현
void print_token( PRECEDENCE token , char** str );
// 토큰을 받아옴. 토큰의 종류
PRECEDENCE get_token( char* symbol , int* n );
압축파일 내 파일목록
infix_to_postfix.c
Problem_05_Postfix.dsp
Problem_05_Postfix.dsw
Problem_05_Postfix.ncb
Problem_05_Postfix.opt
참고 자료
없음