다음은 중위 어를 후위 표현식으로 변환하는 cpp의 코드입니다. 모든 것을 시도했지만 코드가 원하는 결과를 얻지 못하고 있습니까? 누군가 제발 .... plzzzzzz 도와주세요.후행 표현식에 중위 어 표현식이 작동하지 않음
코드가 맞다고 생각하기는하지만 작동하지 않습니다. 이 코드를 확인하는 데 많은 시간을 할애하고 evry 라인 작업을 점검했지만 여전히 작동하지 않습니다.
#include <iostream>
#include<conio.h>
using namespace std;
int k=-1,m=0;
int j=0;
string infi,postfi,operato;
int precedence(char s)
{
switch(s)
{
case '+':
case '-':
return 1;
break;
case '*':
case '/':
return 2;
break;
case '$':
return 3;
break;
case '(':
return 4;
break;
case ')':
return 5;
break;
}
}
void operat()
{
if(k==-1)
{
k++;
operato[k]=infi[j];
//cout<<operato[0]<<"mm";
}
else if(precedence(infi[j])==4)
{
//cout<<"0000";
k++;
operato[k]=infi[j];
}
else if(precedence(infi[j])==5)
{
//cout<<"0000";
while(operato[k]!='(')
{
postfi[m]=operato[k];
m++;
k--;
}
k--;
}
else if(precedence(infi[j])>precedence(operato[k]))
{
//cout<<"0000";
k++;
operato[k]=infi[j];
}
else
{
//cout<<"0000";
postfi[m]=operato[k];
k--;
m++;
operat();
}
//cout<<postfi[0]<<"pp";
}
int main()
{
cin>>infi;
while(infi[j]!='\0')
{
if(infi[j]=='+'||infi[j]=='-'||infi[j]=='*'||infi[j]=='/'||infi[j]=='('||infi[j]==')'||infi[j]=='$')
{
operat();
j++;
}
else
{
postfi[m]=infi[j];
//cout<<postfi[0];
//cout<<"me"<<m<<postfi[m];
m++;
j++;
}
}
while(k!=-1)
{
postfi[m]=operato[k];
//cout<<postfi[0];
//cout<<"me"<<m;
//cout<<"meow"<<m<<postfi[m];
k--;
m++;
}
//cout<<postfi[0];
int g;
for(g=0;g<m;g++)
cout<<postfi[g];
//getch();
return(0);
}
일반적인 제안은 코드별로 단계별로 진행하고 중단 점을 설정하여 진행 상황을 확인할 수있는 디버거를 사용해보십시오. – PherricOxide
사실 나는 그 일을 시도하고 테스트 케이스 a + b를 확인하는 중에도 ab + 인 b +와 + 답이 아닌 올바른 답을 찾는다. – mohit
출력 할 내용은 무엇입니까? 여기서 일반적인 목표는 무엇입니까? – M4rc