STACK을 사용하여 후미 표기법으로 변환하는 C 프로그램을 작성해야했습니다. 그것은 잘되었고 그것은 어떤 식 으로든 작동합니다. 오래전에 C 언어를 사용했을 때 char [] 변수를 사용하지 않았을 것입니다.C langugage - char [] 출력의 "이상한"문자
A+B*(C*E-D)
내 프로그램이 반환 :
그래서 문제는이 같은 입력을 줄 때이다
ABCE*D-*+ĚĚĚĚĚĚĚĚĚĚĚ
그래서 당신은 내 프로그램은 매우 잘 접미사 변환을 한 참조로하지만 난의 무리가 "쓰레기"는 내 결과에 영향을 미친다. 여기
내 코드 (나는, 문자와 아마 뭔가 [] 및 방법 접미사에하는 방법을 내가 값을 assing [] 변수 정확하지 않은 생각 유일한 부분의 조각입니다 :
int main()
{
char infix[20], postfix[20];
int len, tip, i, p=0;
STACK pom;
MAKE_NULL(&pom);
printf ("Unesi izraz.\n");
scanf ("%s", infix);
len = strlen(infix);
for(i=0; i<len; i++)
{
tip = nadi_tip(infix[i]);
if (tip == Lijeva)
{
PUSH (infix[i], &pom);
}
if (tip == Operand)
{
postfix[p] = infix[i];
p++;
}
if (tip == Desna)
{
while (!EMPTY(pom) && (TOP(pom)!= '('))
{
postfix[p++] = TOP(pom);
POP (&pom);
}
POP (&pom);
}
if (tip == Operator)
{
while (!EMPTY(pom) && TOP(pom)!= '(')
{
if(prioritet(infix[i]) <= prioritet(TOP(pom)))
{
postfix[p++] = TOP(pom);
POP (&pom);
}
else break;
}
PUSH(infix[i], &pom);
}
}
while (EMPTY(pom) != 1)
{
postfix[p++] = TOP(pom);
POP(&pom);
}
printf("Izlaz: %s", postfix);
return 0;
}
중위는 [] 내 입력 및 후위는 [] 내 출력됩니다. 내가 왜 ĚĚĚĚĚĚĚĚĚĚĚ 문자를 데 잘못 무슨 짓을. 사전에 감사합니다! 당신은 필요
변환 된 문자열에 널 종결자가 누락 된 것처럼 느껴 집니까? –
모두 감사합니다 !! 내가 할 수 있으면 나는 모든 답을 옳은 것으로 표시 할 것입니다! 초보자 실수 :) 나는 몇 가지 기본적인 일을 잊어 버렸습니다. :) – rjovic