online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
//Infix to Prefix conversion #include<stdio.h> #include<stdlib.h> #define max 50 typedef struct stack { char ar[max]; int top; } st; void push(st *,char); char pop(st *); char peek(st); int isfull(st); int isempty(st); void intopost(char [],char []); int getpriority(char); char getmatch(char); void reverse(char []); void changeparenthesis(char []); int main() { char expr[max],res[max]; printf("\nEnter the expression : "); scanf("%s",expr); reverse(expr); printf("\n\nStep 1 : Reverse the Expression : %s",expr); changeparenthesis(expr); printf("\n\nStep 2 : Exchange the parentesis with it's alterante one : %s",expr); printf("\n\nStep 3 : Perform the postix conversion on the last modified expression"); intopost(expr,res); reverse(res); printf("\n\nStep 4 : Reverse the Postfix expression to get the Prefix Expression : %s",res); } void reverse(char str[]) { int i,len; char temp; for(len=0; str[len]; len++); len--; for(i=0; i<len/2; i++) { temp=str[i]; str[i]=str[len-i]; str[len-i]=temp; } } void changeparenthesis(char str[]) { int i; for(i=0; str[i]; i++) { switch(str[i]) { case '(': str[i]=')'; break; case ')': str[i]='('; break; case '{': str[i]='}'; break; case '}': str[i]='{'; break; case '[': str[i]=']'; break; case ']': str[i]='['; break; } } } void intopost(char expr[],char res[]) { st s; char ch; int i,j; s.top=-1; for(i=0,j=0; expr[i]!='\0'; i++) { if(expr[i]==' ') continue; else if(expr[i]=='(' || expr[i]=='{' || expr[i]=='[') push(&s,expr[i]); else if((expr[i]>=48 && expr[i]<=57) || (expr[i]>=65 && expr[i]<=90) || (expr[i]>=97 && expr[i]<=122)) res[j++]=expr[i]; else if(expr[i]=='+' || expr[i]=='-' || expr[i]=='*' || expr[i]=='/') { while(!isempty(s) && getpriority(expr[i])<=getpriority(peek(s)) && peek(s)!='(') { res[j++]=pop(&s); } push(&s,expr[i]); } else if(expr[i]==')' || expr[i]=='}' || expr[i]==']') { while(!isempty(s) && (ch=pop(&s))!='(') { res[j++]=ch; } } else { //printf("Expression not ok"); break; } } if(!isempty(s)) { while(!isempty(s) && (ch=peek(s))!='(') res[j++]=pop(&s); } res[j]='\0'; } void push(st *s,char ch) { s->ar[++s->top]=ch; } char pop(st *s) { return s->ar[s->top--]; } char peek(st s) { return s.ar[s.top]; } int isempty(st s) { if(s.top==-1) return 1; else return 0; } int isfull(st s) { if(s.top==max-1) return 1; else return 0; } int getpriority(char ch) { switch(ch) { case '+': return 2; case '-': return 1; case '*': return 3; case '/': return 4; } }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue