Here is my code for Transform the Expression problem :-
#include<stdio.h>
#include<stdlib.h>
int prior(char ch)
{
if(ch == '+')
{
return 1;
}
else if(ch == '-')
{
return 2;
}
else if(ch == '*')
{
return 3;
}
else if(ch == '/')
{
return 4;
}
else if(ch == '^')
{
return 5;
}
else if(ch == '(')
{
return 0;
}
}
void push(char *stk,int *top,char ch )
{
if(*top < 399)
{
stk[++(*top)] = ch;
}
}
char pop(char *stk,int *top)
{
if((*top)>=0)
{
char temp;
temp = stk[(*top)--];
return temp;
}
}
int main()
{
int n,stray;
scanf("%d",&n);
char *op = (char *)calloc(400,sizeof(char));
char *ex = (char *)calloc(400,sizeof(char));
char *string = (char *)calloc(400,sizeof(char));
int i,t_op ,t_ex;
char ch;
for(i=0;i<n;i++)
{
scanf("%s",string);
t_op = -1;
t_ex = -1;
while(*string != '\0')
{
if((*string>=65 && *string<=90) || (*string>=97 && *string<=122))
{
push(ex,&t_ex,*string);
}
else
{
if(*string == '(')
{
push(op,&t_op,*string);
}
else if(*string == ')')
{
while((ch = pop(op,&t_op)) != '(')
{
push(ex,&t_ex,ch);
}
}
else if(prior(*string) > prior(op[t_op]))
{
push(op,&t_op,*string);
}
else
{
while(prior(*string) < prior(op[t_op]))
{
push(ex,&t_ex,pop(op,&t_op));
}
push(op,&t_op,*string);
}
}
string++;
}
printf("%s\n",ex);
}
return 0;
}
Can anyone tell me why it is giving wrong answer and is there any link from where we can find the test cases for a given problem?