검색어 입력폼
평가점수A

[자료구조]중위표기식을 후위표기식으로 변환

등록일 2006.07.08 파일확장자압축파일 (zip) | 가격 2,000원

소개글

중위표기식을 후위표기식으로 변환하는 프로그램입니다.

컴파일 실행환경

visual studio 6.0

본문내용

infix notation을 postfix notation으로 변환하는 소스입니다.
두 가지 버전입니다. 둘다 파일로 입력을 받을수 있고 직접 입력을
받을 수도 있습니다.
틀린점은 처음거는 숫자를 한자리라 가정하고 입력받은 infix notation
을 postfix notation으로 변환하고 결과값을 계산하여 출력하는 소스입
니다.
두번째거는 숫자가 아닌 변수도 가능합니다. 한자리가 아닌 예를들어
sum이라는 문자도 가능합니다. infix notation으로 입력받은 식을
postfix notation으로 변환하고 각 토큰을 공백으로 구분하여 출력
합니다. 또한 여기서는 입력사이에 공백이 들어가도 상관없습니다.
소스에 주석있으니깐 그리 어렵지만은 않으실겁니다.


//------------------------------
//notation1.txt 파일이 소스파일과 같은경로에 있어야 함



#include
#include //exit(1)
#include //strcpy, strcat

#define MAX_STACK_SIZE 100 //스택의 최대크기
#define MAX_EXPR_SIZE 100 //수식의 최대크기

typedef enum {
lparen, rparen, plus, minus, times, divide, mod, eos, assignment, operand
} precedence;

int stack[MAX_STACK_SIZE];
char expr[MAX_EXPR_SIZE];
precedence pstack[MAX_STACK_SIZE];
char temp[MAX_EXPR_SIZE];

//isp(in-stack precedence) icp(incoming precedence)
static int isp[] = {0, 19, 12, 12, 13, 13, 13, 0, 1}; //왼쪽괄호 stack안에선 0
static int icp[] = {20, 19, 12, 12, 13, 13, 13, 0, 1}; //stack밖에선 20

void add(int *top, int item); //스택에 삽입
void padd(int *top, precedence item); //pstack에 삽입
int del(int *top); //스택에서 삭제
precedence pdel(int *top); //pstack 에서 삭제
precedence get_token(char *symbol, int *n); //문자를 토큰으로
int eval(void); //후위표기식 계산
char print_token(precedence token); //토큰을 문자로 표시
void postfix(void); //중위표기를 후위표기로
void file_in(void);
void direct_in(void);

압축파일내 파일목록

Report1(20032175).c
Report2(20032175)(2).c
notation1.txt
notation2.txt
다운로드 맨위로