Advertisement
2002C Math #16077

Infix 2 Postfix

It converts infix equation to postfix or reverse polish notation

AI

AI Summary: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

Source Code
original-source
#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));
}
Original Comments (3)
Recovered from Wayback Machine