README.md
December 5, 2022 ยท View on GitHub
Description
It converts infix equation to postfix or reverse polish notation
More Info
It uses string input with a maximum length of 50 which can be changed by the programmer
It shows the user what the postfix notation the entered equation and prints the answer to the screen.
| Submitted On | |
| By | Elmer Baluyo |
| Level | Beginner |
| User Rating | 4.3 (17 globes from 4 users) |
| Compatibility | C, C++ (general) |
| Category | Math |
| World | C / C++ |
| Archive File |
API Declarations
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
Source Code
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define MAX 50
int Stack[MAX];
int Top = 0;
void push (int x)
{
if (Top<MAX)
Stack[Top++] = x;
}
int pop (void)
{
if (Top>0)
return Stack[--Top];
return MAX;
}
void get_infix (char *infix)
{
printf("\nEnter infix notation(max:%d\)->", MAX);
scanf("%s",infix);
}
infix_2_postfix(char *infix, char *postfix)
{
while (*infix) {
switch (*infix) {
case '+':
case '*':
push (*infix);
break;
case '(':
break;
case ')':
*postfix = (char) pop();
postfix++;
break;
default:
*postfix = *infix;
postfix++;
break;
}
infix++;
}
while (Top) {
*postfix = (char) pop();
postfix++;
}
*postfix = '\0';
}
int eval (char *postfix)
{
int ans = 0;
while (*postfix) {
switch (*postfix) {
case '+': ans = (pop()-48) + (pop()-48); push(ans+48);
break;
case '*': ans = (pop()-48) * (pop()-48); push(ans+48);
break;
default:
push(*postfix);
break;
}
postfix++;
}
return ans;
}
void main(void)
{
int i;
char infix[MAX], postfix[MAX];
get_infix(infix);
infix_2_postfix(infix, postfix);
printf("\n %s %s = %d", infix, postfix, eval(postfix));
}