wrong answer for Transform the Expression

please give me special test case to find error for following program

void rpn(char*);    
void swap(char*p)  
{    int j;  
      char temp;  
	      if(*(p+1)!='(')         
		  {	if(*(p+1)!=')'&&*(p-1)!='(')   
			  {if(*(p-2)=='(')   
			                  {     	*(p-2)=*(p-1);  
				                  *(p-1)=*(p+1);  
				                  for(j=1;*(p+j)!='\0';j++)  
				                          *(p+j)=*(p+j+2);  
                            }  
             else if(*(p+2)==')'&&*(p+1)!='*'&&*(p+1)!='/'&&*(p+1)!='^'&&*(p+1)!='+'&&*(p+1)!='-')  
                            {  
                                 temp=*p;  
                                 *p=*(p+1);  
                                 *(p+1)=temp;  
                                 for(j=2;*(p+j)!='\0';j++)  
				                          *(p+j)=*(p+j+1);  
                              }    
            }  
		   }  
		else if(*(p+1)=='(')  
		   { rpn(p+1);  
		     temp=*p;  
		     if(*(p+1)=='('){  
					for(j=1;*(p+j)!='\0';j++)  
						  *(p+j)=*(p+j+1);  
				    }  
		     for(j=0;*(p+j+1)!=')'&&*(p+j)!='\0';j++)  
			    *(p+j)=*(p+j+1);  
		     *(p+j)=temp;  
		     for(j++;*(p+j)!='\0';j++)  
			    *(p+j)=*(p+j+1);  
		   }  

}  
void rpn(char*p)  
{  
	int i;  
	for(i=0;*(p+i)!='\0';i++)  
	{  
	 if(*(p+i)=='^')  
	      swap(p+i);  
	 else if(*(p+i)=='*')  
	      swap(p+i);  
	 else if(*(p+i)=='/')  
	      swap(p+i);  
	 else if(*(p+i)=='+')  
	      swap(p+i);  
	 else if(*(p+i)=='-')  
	      swap(p+i);  
	}  
}  
void rm(char*p)  
{  
	int i,j;  
	for(i=0;*(p+i)!='\0';i++)  
	    if(*(p+i)=='('||*(p+i)==')')  
	       {for(j=i;*(p+j)!='\0';j++)  
		     *(p+j)=*(p+j+1);  
           i--;}  
}  
int main()  
{  
	char a[100][401];  
	int i,j,t;  
	scanf("%d",&t);  
	if(t<=100)  
	{  
	 for(i=0;i<t;i++)  
	  scanf("%s",a[i]);  
	 for(i=0;i<t;i++)  
	    {rpn(a[i]);  
	     rm(a[i]);   
	     printf("\n%s",a[i]);  
	    }  
  
  	}  
return 0;   
}
//