合式公式

以前写的,现在又被我捞出来了。。。。

#include<stdio.h>
#include<queue>
using namespace std;
const int MAXN=100010;
#define alx)x>='a'&&x<='z')
char m[MAXN];
queue<char>dl;
int stnum,alnum;
bool sup){
	char a,b;
	while!dl.empty)){
	a=dl.front);
	dl.pop);
	ifa==')'){
		stnum--;
		return true;
	}
	else ifa=='!'){
		ifdl.empty))return false;
		b=dl.front);
		dl.pop);
	}
	else ifa==''){
		stnum++;
		if!sup))return false;
	}
	else if!ala))return false;
	ifdl.empty))return true;
	b=dl.front);
	dl.pop);
	ifb==')'){
		stnum--;
		return true;
	}
	ifb=='+'||b=='*'||b=='-'||b=='='){
		ifdl.empty))return false;
	}
	else return false;
}
}
int main){
	puts"由于制表符打印着麻烦,这里用!,+,*,-,=分别代替┒,∧,∨,→,那个双箭头没找到。。。"); 
	whilegetsm)){
		while!dl.empty))dl.pop);
		stnum=0;alnum=0;
		forint i=0;m[i];i++){
			ifm[i]==' '||m[i]=='	')continue;
			ifalm[i]))alnum++;
			dl.pushm[i]);
		}
		ifdl.empty)||!alnum)puts"不是合式公式");//判断表达式为空时不是合式公式; 
		else if!sup)||stnum!=0)puts"不是合式公式");
		else puts"是合式公式");
	}
	return 0;
}

  

Published by

风君子

独自遨游何稽首 揭天掀地慰生平