J'essaie de comprendre ce code. Qu'est-ce qu'il fait postfix l'évaluation de l'expression. J'ai de la difficulté à comprendre le code. Je serai très reconnaissant si quelqu'un peut m'aider.Comprendre le code d'évaluation de l'expression postfixe
#include <iostream>
#include <cstring>
#include <stack>
using namespace std;
int main()
{
//suppose a contains the string..
//n is the length of string...
char a[10]="A+B/C";
int n = strlen(a)
stack<int>s;
for (int i=0;i<n;i++)
{
if (a[i]=='+')
{
s.push(s.pop()+s.pop());
int temp1 = s.top();
s.pop();
int temp2 = s.top();
s.pop();
s.push(temp1 * temp2);
}
if (a[i]=='*')
s.push(s.pop() * s.pop());
if ((a[i]>='0') && (a[i]<='9'))
s.push(0);
while ((a[i]>='0') && (a[i]<='9'))
s.push(10*s.pop()+(a[i++]-'0'));
}
cout<<s.pop()<<endl;
return 0;
}
Merci d'avance.
avez-vous écrit cet exemple pour 'a'? parce que ce n'est pas un postfix. –
Quelle est la question? – AJG85
stack :: pop() est une fonction vide. Ce code est un gâchis. Il suffit de chercher une calculatrice postfix sur SO et vous trouverez quelques douzaines (meilleurs) extraits de ce –
sehe