Fixed_Process◇ 문제 기술◆ 연산식을 입력 받는다.연산식은 1개의 문자와 사칙연산으로 구성◆ 입력받은 연산식을 전위, 후위 처리 방식으로 재정렬하여 출력한다.별도의 입력(처리방식)을 통한 처리◇ 설계⇒ 프로그램 실행시 default 처리 방식을 후위처리방식으로 잡는다.→ 처리 메소드에 input할 때 후위는 연산식 순서 그대로 들어가지만 전위처리는 완전 뒤집어야 하기 때문이다.⇒ input 배열, output 배열, 연산자 저장 임시 저장 배열 3가지를 가지고 스택 방식으로 순차적으로 꺼내서 넣는 방식을 반복한다.⇒ 중점적으로 사용하는 변수를 전역으로 사용하여 코드를 단순화 시킨다.⇒ 알고리즘 중점으로 구현시킨다.→ 입력 부분은 규칙에 맞는 올바른 입력에 대해서만 처리하게 한다.⇒ 이중 while문을 사용하여 지속적인 입력 또는 필요한 처리 방식을 고를 수 있도록 한다.◇ Source/***************************************************************** Display : 입력 받은 한가지 메소드로 연산식을 전위 후위 방식으로 표현하기*****************************************************************/#include#include#define Max 20// 연산식 최대값int leng=0;// 입력받은 연산식의 길이 저장int method;// 전,후위 선택 변수char stack_output[Max]={NULL};// 전,후위된 데이타 저장 스택char stack_operation[2][Max]={NULL};// 연산자 저장 스택void fix(char in_put[Max]);void output(int leng);void main(){char in_put[Max]={NULL};while(1) {int power;printf("*===========================================*n");printf("| [MENU]n|t");printf("[ Operation Input : 1 , Program Return : 2 ]n| [ SELECT ] : ");scanf("%d", &power);getchar();if(power==1) {printf("| [ OPERATION INPUT ] : ");gets(in_put);leng=strlen(in_put);// 연산식 입력처리while(1) {printf("| *==============* FIXED METHOD TYPE *==============*n");printf("| [SUB_MENU] n|t");printf("[PREFIX : 1 , POST FIX : 2, INPUT_AGAIN : 3 ] n| [ SELECT ] : ");scanf("%d", &method);getchar();// 연산식 처리 방법 입력 처리if(method==3) {// 재입력시 종료시break;}else if(method==1){// 전위 처리// Default가 후위로 되어 있어 전위처리하기 위해// 입력된 연산식을 역으로 뒤집음.char exchange[Max]={NULL};int temp = leng;for (int ch=0; ch=1; i--){// 남은 연산자처리stack_output[top_char]=stack_operation[0][i];top_char++;}output(leng);}◇ 결과◇ 고찰⇒ 일단 알고리즘 중점적으로 구현함으로써 에러에 대한 취약성이 있으나, 처리 방식에서는 단일 메소드 만으로 구현하도록 함으로써 시간적 공간적 복잡도를 최소화 함.⇒ 후위 처리방식은 비교적 간단히 해결했지만 전위처리는 그 처리 방식이 복잡다단하여 나름대로 고생했으나 후위와 전위의 수학적 구현방식의 관계를 알아내고 나니 비교적 간단하게 알고리즘을 구현하게 되었습니다.