#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
#define MAX 100
// Stack implementation
int stack[MAX];
int top = -1;
// Push function
void push(int value) {
if (top == MAX - 1) {
printf("Stack overflow!\n");
exit(1);
}
stack[++top] = value;
}
// Pop function
int pop() {
if (top == -1) {
printf("Stack underflow!\n");
exit(1);
}
return stack[top--];
}
// Function to evaluate postfix expression
int evaluatePostfix(char* exp) {
for (int i = 0; exp[i]; i++) {
char ch = exp[i];
if (isspace(ch)) {
continue;
}
else if (isdigit(ch)) {
// Convert char digit to int and push
push(ch - '0');
}
else {
int val2 = pop();
int val1 = pop();
switch (ch) {
case '+': push(val1 + val2); break;
case '-': push(val1 - val2); break;
case '*': push(val1 * val2); break;
case '/': push(val1 / val2); break;
case '^': push(pow(val1, val2)); break;
default:
printf("Invalid operator: %c\n", ch);
exit(1);
}
}
}
return pop(); // Final result
}
// Main function
int main() {
char expression[MAX];
printf("Enter a postfix expression (e.g., 231*+9-): ");
scanf("%s", expression);
int result = evaluatePostfix(expression);
printf("Result = %d\n", result);
return 0;
}
Comments
Post a Comment