README.md

December 5, 2022 ยท View on GitHub

Infix 2 Postfix

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
ByElmer Baluyo
LevelBeginner
User Rating4.3 (17 globes from 4 users)
CompatibilityC, C++ (general)
CategoryMath
WorldC / 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));
}