Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

!F&(!!F)

Posted by NYQCBHH at 2017-09-10 10:40:16 on Problem 2106
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator