중위표기식을 후위표기식으로 변환
#include
#include
#include
using namespace std;
stack s;
char print[99999];
int i=0;
int precedence(int op){
if (op == '(') return 3;
if (op == '+' || op == '-') return 1;
if (op == '*' || op == '/') return 2;
else return 0;
}
int cal(char a){
if(a=='('){
s.push('(');
}
else if(a==')'){
while(s.top()!='('){
print[i]=s.top();
i++;
s.pop();
}
s.pop();
}
else if(a=='+'||a=='-'||a=='*'||a=='/'){
while(precedence(s.top())>=precedence(a)){
print[i]=s.top();
i++;
s.pop();
s.push(a);
}
}
else{
print[i]=a;
i++;
}
}
int main(void){
char a;
int j;
for(;a=')';){
a=getche();
cal(a);
}
while(!s.empty()){
print[i]=s.top();
s.pop();
}
for(i=j;j<=i;j++)
{
printf("%c",print[j]);
}
return(0);
}
이렇게 짜긴 했는데....
실행하면 글씨를 쓰다가 글씨가 써지지를 않습니다. 그 밖에도 오류가 많은 것 같은데 어떻게 고쳐야 할까요?
저는 컴파일이 안됩니다.
...
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
getche()
getche() 는 이렇다고 합니다.
http://kcoder.tistory.com/43
입력 끝이 \r로 버퍼가 없다고 합니다.
getch() 를 사용하면. 한 문자씩 나옵니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
디버그해서 출력해보면.
원인은 13x 5 에서 일어났습니다.
while(precedence(s.top())>=precedence(a)) //여기서 문제 발생
{
}
풀어서 값을 확인해보면. 디버그하기 편할겁니다.
while(1)
{
char cc = s.top();
int n1 = precedence(cc);
int n2 = precedence(a);
if(n1 >= n2)
{
break;
}
}
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기