소개글
그대로 복사하셔서 컴파일 후 실행하시면 됩니다.
목차
두자리수이상과 음수도 가능하며 각종 다양한 연산과 출력이 출력 가능하다
본문내용
#define MAX_STACK_SIZE 100//매크로로 크기 지정
#define MAX_EXPR_SIZE 100
typedef enum {lparen,rparen,plus,minus,times,divide,mod,lnot,and,or,lb,lbs,rbs,
rb,not,same,comp,band,bor,bexor,eos,operand} precedence;
//열거 타입을 사용하여 각각의 우선순위를 주기 위해 정렬한다
int stack[MAX_STACK_SIZE];//스택의 최대 크기 (입력시 사용)
precedence pstack[MAX_STACK_SIZE];//열거타입 스택의 최대 크기 (츌력시 사용)
char expr[MAX_EXPR_SIZE];//연산을 위한 문자배열
char pexpr[MAX_EXPR_SIZE];//출력을 위한 문자 배열
char num[MAX_EXPR_SIZE];//입력받을 infix
int value[10];//2자리 이상의 연산을 위한 전역 변수
//해당 연산자에대한 우선순위를 정해준다
static int isp[]={0,19,12,12,13,13,13,15,5,4,10,10,10,10,9,9,15,8,6,7,0};
static int icp[]={20,19,12,12,13,13,13,15,5,4,10,10,10,10,9,9,15,8,6,7,0};
void add(int *top,int item);//계산할때 스택에 추가 (숫자가 스택에 쌓인다)
int del(int *top);//계산할때 스택에서 삭제
void padd(int *top,precedence item);//출력시 스택에 추가 (연산자가 스택에 쌓인다)
int calc();//계산하는 함수
precedence pdel(int *top);//출력시 스택에 삭제
precedence get_token(char *symbol, int *n);//토큰으로 구별 한다
void postfix();//postfix로 전환하는 함수
char print_token(precedence token);//출력시 토큰으로 구별
void convert();//숫자 변환
void convertchar(int i,int j);//2자리수 이상의 문자 변환
참고 자료
Data structure in C 이석호(역)