Hallo Leute,
ich hab ein kleines Problem mit meinem Programm:
Es soll eine eingegebene Infix Notation in eine Postfix Notation umwandeln. Bei einigen Ausdrücken macht er das auch, bei anderen wiederum nicht, da stürzt er einfach ab. Ich weiß echt nicht wo der Fehler liegt. Ich hoffe jemand hier kann mir weiterhelfen.
DANKE SCHONMAL!!!
#include
#include
using namespace std;
//testet die Priorität der Operanden
int priority(char e){
int pri = 0;
if(e == '\*' || e == '/' || e == '%'){
pri = 2;
}else{
if(e == '+' || e == '-'){
pri = 1;
}
}
return pri;
}
int main(){
cout charStack;
char input[100];
char output[100];
char n1;
char \*o;
o = &output[0];
cin \>\> input;
int n = 0;
while(input[n] != 0){
if(isdigit(input[n]) || isalpha(input[n])){
\*o = input[n];
n++;
o++;
}
if(input[n] == '('){
charStack.push(input[n]);
n++;
}
if(input[n] == ')'){
n1 = charStack.top();
charStack.pop();
while(n1 != '('){
\*o = n1;
o++;
n1 = charStack.top();
charStack.pop();
}
n++;
}
if(input[n] == '+' || input[n] == '-' || input[n] == '\*' || input[n] == '/' || input[n] == '%'){
if(charStack.empty() == true){
charStack.push(input[n]);
}else{
n1 = charStack.top();
charStack.pop();
while(priority(n1) \>= priority(input[n])){
\*o = n1;
o++;
n1 = charStack.top();
charStack.pop();
}
charStack.push(n1);
charStack.push(input[n]);
}
n++;
}
}
while(!charStack.empty()){
\*o = charStack.top();
o++;
charStack.pop();
}
\*o = '\0';
cout