| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
改进了好几个地方,可总是RE,是不是数组作形参造成的?高手帮忙看一下#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
#define MAX 251
int n,len;
int Operator(char s)
{
if (s=='+'||s=='-'||s=='*'||s=='/') return 1;
else return 0;
}
int FindChar(int p,char s[],char &lc,char &rc)
{
int tp;
if ((p>=0)&&(p<len))
{
tp=p;
while(1){
if (tp>=0)
{
if ((s[tp-1]=='(')||(s[tp-1]==')')) {lc='#';break;}
if (Operator(s[tp])) {lc=s[tp];break;}
else tp--;
}
else {lc='#';break;}
}
tp=p;
while(1){
if (tp<len)
{
if ((s[tp+1]=='(')||(s[tp+1]==')')) {rc='#';break;}
if (Operator(s[tp])) {rc=s[tp];break;}
else tp++;
}
else {rc='#';break;}
}
return 1;
}
else return 0;
}
int Cancel(char a,char b,char c,char d)
{
int flag1,flag2;
if ((a=='+')||(a=='-'&&(b=='*'||b=='/'))||(a=='*'&&(b=='*'||b=='/'))||a=='#'||b=='#') flag1=1;
else flag1=0;
if ((c=='+'&&(d=='+'||d=='-'))||(c=='-'&&(d=='+'||d=='-'))||c=='*'||c=='/'||c=='#'||d=='#') flag2=1;
else flag2=0;
if ((flag1==1)&&(flag2==1)) return 1;
else return 0;
}
int Parentheses(char s[])
{
int p=0,pl,pr;
char lc1=' ',rc1=' ',lc2=' ',rc2=' ';
while(s[p]!='\0')
{
if (s[p]==')') {
pr=p;
FindChar (pr,s,lc2,rc2);
while(s[p]!='(') p--;
pl=p;
FindChar (pl,s,lc1,rc1);
if (Cancel(lc1,rc1,lc2,rc2)) {s[pr]='0';s[pl]='0';}
else {s[pr]='>';s[pl]='<';}
}
p++;
}
return 1;
}
int main()
{
char str[N][MAX];
int i,j;
scanf("%d",&n);
for (i=0;i<n;i++){
scanf("%s",str[i]);
if (strlen(str[i])>251) return -1;
}
for (i=0;i<n;i++)
{
len=strlen(str[i]);
Parentheses(str[i]);
j=0;
while(str[i][j]!='\0'){
if (str[i][j]=='<') str[i][j]='(';
if (str[i][j]=='>') str[i][j]=')';
if (str[i][j]!='0') printf("%c",str[i][j]);
j++;
}
printf("\n");
}
system("PAUSE");
return 1;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator