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 |
!F&(!!F)In Reply To:谁能帮我看一下啊?Discuss的所有建议都通过了,但就是WA Posted by:huanghongxun at 2012-07-25 08:38:13 > #include<iostream> > #include<string> > #include<cstdlib> > #include<cstdio> > #include<cmath> > #include <stack> > #define max 200 > using namespace std; > long double str2num(const char *s) > { > long double num; > sscanf(s, "%lf", &num); > return num; > } > char ex[max]; //存储后缀表达式 > string str; //存储原算术表达式 > void trans() //将算术表达式转化为后缀表达式 > { > char stack[max]; //作为栈使用 > char ch; > int i,j,t,top=0; > i=0; //获取用户输入的表达式 > str.append("#"); > t=0;i=0; > ch=str[i];i++; > while(ch!='#'){ > switch(ch){ > case '(': //判定为左括号 > stack[++top]=ch; > break; > case ')': //判定为右括号 > while(stack[top]!='('&&top>-1) > ex[t++]=stack[top--]; > top--; > break; > case '|': //判定为或 > while(top!=0&&stack[top]!='(') > ex[t++]=stack[top--]; > stack[++top]=ch; > break; > case '&': //判定为且 > while(stack[top]=='&') > ex[t++]=stack[top--]; > stack[++top]=ch; > break; > case '!': > stack[++top] = ch; > break; > case '#': > break; > case ' ': > break; > case 'V': > case 'F': > while(ch=='V'||ch=='F') //判定为布尔 > { > ex[t++]=ch; > ch=str[i++]; > } > i--; > break; > } > ch=str[i];i++; > } > while(top!=0) > ex[t++]=stack[top--]; > ex[t]='#'; > } > void compvalue(int Case){ //计算后缀表达式的值 > bool stack[max],d; //作为栈使用 > char ch; > int t=0,top=0; //t为ex下标,top为stack下标 > ch=ex[t++]; > string digit; > while(ch!='#'){ > switch(ch){ > case '|': > if(stack[top-1]==1||stack[top]==1)stack[top-1]=1; > else stack[top-1]=0; > top--; > break; > case '&': > if(stack[top-1]==1&&stack[top]==1)stack[top-1]=1; > else stack[top-1]=0; > top--; > break; > case '!': > if(stack[top]==1)stack[top]=0; > else stack[top]=1; > break; > case 'V': > stack[++top]=1; > break; > case 'F': > stack[++top]=0; > break; > } > ch=ex[t];t++; > } > printf("Expression %d: %c\n", Case, stack[top]?'V':'F'); > } > int main(){ > int Case = 0; > char *s = new char[255]; > while(gets(s)) > { > str = string(s); > Case++; > trans(); > compvalue(Case); > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator