Ich versuche ein C-Programm zur Auswertung von Postfix-Ausdrücken zu erstellen und dabei wird ein unerwünschtes Symbol auf dem Bildschirm für den Eingang 45+ gedruckt. P.S. Bitte sagen Sie mir den Fehler (außer dass gets() ich jetzt studiere, wie fgets verwenden())Unerwünschtes Symbolergebnis bei der Auswertung von Postfix-Ausdruck
// to Evaluate a postfix expression
#include<stdio.h>
#include<conio.h>
int is_operator(char);
void answer();
char stack[100];
int top =-1;
void push(char);
char pop();
void main()
{
char postfix[100],item;
int i=0;
clrscr();
printf("Enter Postfix Expression");
gets(postfix);
while(postfix[i]!='\0')
{
item=postfix[i];
if(is_operator(item)==2)
{
push(item);
}
if(is_operator(item)==1)
{
char op;
int n1,n2,n3;
op=item;
n1=pop();
n2=pop();
switch(op)
{
case '+':
n3=n1+n2;
case '-':
n3=n1-n2;
case '*':
n3=n1*n2;
case '/':
n3=n1/n2;
}
push(n3);
}
i++;
}//end while
answer();
getch();
}
void push(char c)
{
top++;
stack[top]=c;
}
char pop()
{
char c;
c=stack[top];
top--;
return(c);
}
int is_operator(char i)
{
char ch=i;
if(ch=='+'||ch=='-'||ch=='*'||ch=='/')
{
return(1);
}
else
{
return(2);
}
}
void answer()
{
char ans;
ans=stack[top];
printf("Answere is %c",ans);
}
Könnten Sie hiermit auch die aktuelle Ausgabe und erwarteten Ausgang anschließen? (durch Bearbeiten Ihrer Frage) –
Wenn Sie noch nie einen Debugger benutzt haben, ist jetzt der richtige Zeitpunkt. Mit einem Debugger können Sie Zeile für Zeile durch den Code gehen und gleichzeitig Variablen und deren Werte und deren Änderung verfolgen. Auf diese Weise sollten Sie leicht herausfinden können, wo es passiert und hoffentlich auch warum. –
Current Output ist unerwünschtes Symbol wie ein Smileysgesicht Und Wanted Output ist 9 @JonnyHenly – user6547375