Logo 
Search:

C Programming Articles

Submit Article
Home » Articles » C Programming » Mathematics ProgramRSS Feeds

Program to convert an expression in postfix form to an infix form

Posted By: Alarice Miller     Category: C Programming     Views: 7228

Program to convert an expression in postfix form to an infix form.

Code for Program to convert an expression in postfix form to an infix form in C Programming

#include <stdio.h>
#include <conio.h>
#include <string.h>

#define MAX 50

struct postfix
{
    char stack[MAX][MAX], target[MAX] ;
    char temp1[2], temp2[2] ;
    char str1[MAX], str2[MAX], str3[MAX] ;
    int i, top ;
} ;

void initpostfix ( struct postfix * ) ;
void setexpr ( struct postfix *, char * ) ;
void push ( struct postfix *, char * ) ;
void pop ( struct postfix *, char * ) ;
void convert ( struct postfix * ) ;
void show ( struct postfix ) ;

void main( )
{
    struct postfix q ;
    char expr[MAX] ;

    clrscr( ) ;

    initpostfix ( &q ) ;

    printf ( "\nEnter an expression in postfix form: " ) ;
    gets ( expr ) ;

    setexpr ( &q, expr ) ;
    convert ( &q ) ;

    printf ( "\nThe infix expression is: " ) ;
    show ( q ) ;

    getch( ) ;
}

/* initializes data member */
void initpostfix ( struct postfix *p ) { p -> i = 0 ; p -> top = -1 ; strcpy ( p -> target, "" ) ; } /* copies given expression to target string */
void setexpr ( struct postfix *p, char *c ) { strcpy ( p -> target, c ) ; } /* adds an expr. to the stack */
void push ( struct postfix *p, char *str ) { if ( p -> top == MAX - 1 ) printf ( "\nStack is full." ) ; else { p -> top++ ; strcpy ( p -> stack[p -> top], str ) ; } } /* pops an expr. from the stack */
void pop ( struct postfix *p, char *a ) { if ( p -> top == -1 ) printf ( "\nStack is empty." ) ; else { strcpy ( a, p -> stack[p -> top] ) ; p -> top-- ; } } /* converts given expr. to infix form */
void convert ( struct postfix *p ) { while ( p -> target[p -> i] ) { /* skip whitespace, if any */
if( p -> target[p -> i] == ' ' ) p -> i++ ; if ( p -> target[p -> i] == '%' || p -> target[p -> i] == '*' || p -> target[p -> i] == '-' || p -> target[p -> i] == '+' || p -> target[p -> i] == '/' || p -> target[p -> i] == '$' ) { pop ( p, p -> str2 ) ; pop ( p, p -> str3 ) ; p -> temp1[0] = p -> target[p -> i] ; p -> temp1[1] = '\0' ; strcpy ( p -> str1, p -> str3 ) ; strcat ( p -> str1, p -> temp1 ) ; strcat ( p -> str1, p -> str2 ) ; push ( p, p -> str1 ) ; } else { p -> temp1[0] = p -> target[p -> i] ; p -> temp1[1] = '\0' ; strcpy ( p -> temp2, p -> temp1 ) ; push ( p, p -> temp2 ) ; } p -> i++ ; } } /* displays the expression */
void show ( struct postfix p ) { char *t ; t = p.stack[0] ; while ( *t ) { printf ( "%c ", *t ) ; t++ ; } }
  
Share: 



Alarice Miller
Alarice Miller author of Program to convert an expression in postfix form to an infix form is from Frankfurt, Germany.
 
View All Articles

Related Articles and Code:


 
Please enter your Comment

  • Comment should be atleast 30 Characters.
  • Please put code inside [Code] your code [/Code].

 
No Comment Found, Be the First to post comment!