亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

??

?? 表達(dá)式的求值!!!!數(shù)據(jù)結(jié)構(gòu).實(shí)現(xiàn)功能!
??
字號(hào):

// 漏洞:01+2=3  誤認(rèn)為合法
//        (-2+3) 誤認(rèn)為非法 
//       1/0 默認(rèn)為允許
  ////////////  以上漏洞已經(jīng)修復(fù) 2007年5月22號(hào)
#include<iostream>
#include "計(jì)算.h"
#include "Windows.h"  //Sleep()函數(shù)
#define NUM 1
#define OPE 2 //判斷字符的類型
#define RK 3
#define LK 4
#define END 5
#define OTHER -1

typedef char SElemType;

using namespace std;

 struct SqStack
{
	SElemType *base;
	SElemType *top;
	int stackSize;
		
};

int kind(const char c);
bool checkOrder( const char *q)  ;
bool canKuoHaoMatch(const char *c) ; //檢查括號(hào)是否匹配
bool push(SqStack &S,SElemType e);
bool pop(SqStack &S,SElemType &e);
bool initSqStack(SqStack &S);
bool checkItNow(const SElemType *c);
char precede(const char a,const char b) ; //判斷運(yùn)算符a與b的優(yōu)先級(jí)  
SElemType getTop(SqStack S);
float calExpress(const SElemType *c);


int main()
{
	char b[78];
    char c[80];
	while(true)
	{		
		cout<<"請(qǐng)輸入表達(dá)式"<<endl;
		cin>>b;
		int j=0;
		if(b[0]=='-')  //若第一個(gè)字符為'-',則在它前面加上一個(gè)'0'
		{
			j=1;
			c[0]='0';
		}
		int i=0;
		while(b[i])		//將數(shù)組b處理后,存儲(chǔ)到數(shù)組c
		{
			if(b[i]=='('&&b[i+1]=='-')  //若是這種情況 "(-    ",則數(shù)組c前三個(gè)字符為 "(0-   "
			{
				c[j++]=b[i++];
				c[j++]='0';
			}
			else
				c[j++]=b[i++];
		}

		c[j]='\0';
		if (!checkItNow(c))
		{
			Sleep(500);
			cout<<"你輸入了非法表達(dá)式! "<<endl;
			Sleep(500);
			continue;
		}
		    
       	c[j]='#';
		c[j+1]='\0';
		
		cout<<b<<"=";
		Sleep(500);
		cout<<calExpress(c)<<endl;
		Sleep(500);
	}
	
	
	
	return 0;
}
bool initSqStack(SqStack &S)
{
	S.base =(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
	if(!S.base) return false;
	S.top=S.base;
	S.stackSize=STACK_INIT_SIZE;
	return true;
}
bool push(SqStack &S,SElemType e)
{
	if(S.top-S.base>=S.stackSize-1)
	{
		S.base =(SElemType *)realloc(S.base,(S.stackSize+STACKINCREMENT)*sizeof(SElemType));
		if(!S.base) return false;
		S.top =S.base +(S.stackSize -1);
		S.stackSize+=STACKINCREMENT;
	}
	*S.top=e;
	S.top+=1;
	
	return true;
}


bool pop(SqStack &S,SElemType &e)
{
	if (S.base==S.top) return false;
	e=*--S.top;
	return true;
}



SElemType getTop(SqStack S)
{
	SElemType e;
	if(S.base ==S.top) exit(1);
	e=*--S.top;
	return e ;
}


int kind(const char c)		//判定字符種類
{
	if(c>='0'&&c<='9')	//數(shù)字字符
		return NUM;
	if(c=='+'||c=='-'||c=='*'||c=='/')	//運(yùn)算符號(hào)
		return OPE;
	if(c=='(')
		return LK;
	if(c==')')
		return RK;
	if(c=='\0')
		return END;
	return OTHER;  //其他非法字符
}
bool checkOrder(const char *q)  //檢測(cè)表達(dá)式符號(hào)順序是否正確
{
	if(kind(q[0])==OPE) return false;
	int t=0;	//判斷是否正在掃描操作數(shù)
	while(*q!='\0')
	{
		int flag=kind(*(q+1));
		
		switch(kind(*q))
		{
		case NUM:
			t++;
			if(*q=='0'&&flag==NUM&&t==1) return false;  //非零數(shù)的第一位不能為零
			if(flag==OPE||flag==RK||flag==END||flag==NUM)	//數(shù)字后面只能是:運(yùn)算符號(hào),右括號(hào),'\0',數(shù)字字符
			{
				q++;
				break;
			}
			else
				return false;
		case OPE:
			t=0;
			if(*q=='/'&&*(q+1)=='0')return false;  //分母不能為零
			if(flag==NUM||flag==LK)
			{
				q++;
				break;
			}
			else
				return false;
		case LK:
			t=0;
			if(flag==NUM||flag==LK)
			{
				q++;
				break;
			}
			else
				return false;
		case RK:
			t=0;
			if(flag==OPE||flag==END||flag==RK)
			{
				q++;
				break;
			}
			else
				return false;
		case OTHER:
			t=0;
			return false;
		}
	}
	return true;
}

bool canKuoHaoMatch(const SElemType *c)  //檢查括號(hào)是否匹配
{
	SqStack kuo;
	SElemType a;
 	initSqStack(kuo);
	while(*c!='\0')
	{
		if('('==*c) push(kuo,*c);		//若為左括號(hào)則進(jìn)棧
		if(')'==*c)			//若為右括號(hào)則出棧
		{
			if(kuo.base ==kuo.top ) return false;
			pop(kuo,a);
		}
		c++;
	}
	if(kuo.base ==kuo.top )		//遍歷整個(gè)字符串后,若括號(hào)匹配,棧應(yīng)該為空
		return true;
	else
		return false;
}
bool checkItNow(const SElemType *c)
{
	if(canKuoHaoMatch(c)&checkOrder(c))
		return true;
	else
		return false;
}

char precede(const char a,const char b)  //判斷運(yùn)算符a與b的優(yōu)先級(jí)  
{                            //假設(shè)a,b都是合法字符,即表達(dá)式正確
	switch(a)
	{
	case '+':
		if(b=='*'||b=='/'||b=='(') 
			return '<';
		else
			return '>';
	case '-':
		if(b=='*'||b=='/'||b=='(') 
			return '<';
		else
			return '>';
	case '*':
		if('('==b)
			return '<';
		else
			return '>';
	case '/':
		if('('==b)
			return '<';
		else
			return '>';
	case '(':
		if (')'==b)
			return '=';
		else
			return '<';
	case ')':
		return '>';
	case '#':
		if(b=='#')
			return '=';
		else
			return '<';
	default:
		return ' ';
	}
}

float calExpress(const SElemType *c)	//運(yùn)算表達(dá)式的值
{
	SqStack OPTR;
	calStack OPND;
	initSqStack(OPTR);
	push(OPTR,'#');
	initcalStack(OPND);
	while(*c!='#'||getTop(OPTR)!='#')
	{
		float temp=0;
		int i=0;   // i為數(shù)字的位數(shù)
		if(kind(*c)==NUM)
		{
			const SElemType *p;
			p =c;
			for(;kind(*p)==NUM;p++)	//當(dāng)*p為數(shù)字時(shí),計(jì)算出有幾個(gè)數(shù)字字符連續(xù)個(gè)數(shù)
			{
				i++;
			}
			for(int j=i;j>=1;j--)
			{
				temp+=change(*c,j);
				c++;
			}	
			pushNum(OPND,temp);		//將操作數(shù)入棧
		}
		else
		{
			SElemType theta=getTop(OPTR);
			switch(precede(theta,*c))
			{
			case '<':
				push(OPTR,*c);
				c++;
				break;
			case '=':
				SElemType x;
				pop(OPTR,x);
				c++;
				break;
			case '>':
				float a,b;
				pop(OPTR,theta);
				popNum(OPND,b);
				popNum(OPND,a);
				pushNum(OPND,operate(a,theta ,b));
				break;
			}
		}
	}
	return getTopNum(OPND);
}
	






?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频网在线直播| 国产视频一区二区在线| 国产精品久久一级| 日本不卡在线视频| 色狠狠色狠狠综合| 欧美精彩视频一区二区三区| 久久精品国产**网站演员| 欧美丝袜丝交足nylons图片| 国产欧美精品在线观看| 精品写真视频在线观看| 欧美视频在线一区| 亚洲色图色小说| 成人综合婷婷国产精品久久蜜臀 | 午夜不卡av免费| 99综合电影在线视频| 久久色.com| 麻豆freexxxx性91精品| 欧美日韩电影在线播放| 亚洲女女做受ⅹxx高潮| 成人国产精品免费观看视频| 久久只精品国产| 蜜桃视频一区二区| 欧美精品三级日韩久久| 亚洲成人av中文| 91福利精品第一导航| 亚洲欧洲av色图| 丁香啪啪综合成人亚洲小说| 国产亚洲视频系列| 国产毛片精品一区| 精品国产91洋老外米糕| 免费观看在线综合色| 欧美精品一级二级| 午夜精品123| 欧美日韩国产片| 亚洲bt欧美bt精品| 欧美在线小视频| 亚洲一区在线视频观看| 欧美国产欧美亚州国产日韩mv天天看完整| 午夜精品爽啪视频| 日本丶国产丶欧美色综合| 一区二区激情小说| 欧美中文字幕亚洲一区二区va在线| 亚洲人123区| 91福利国产精品| 五月天欧美精品| 日韩一区二区在线播放| 久久国产精品一区二区| 日韩视频中午一区| 国产在线视频精品一区| 国产欧美精品一区| av毛片久久久久**hd| 1区2区3区精品视频| 成人短视频下载| 亚洲欧美一区二区视频| 色94色欧美sute亚洲线路一久| 一区二区三区国产豹纹内裤在线| 欧洲色大大久久| 偷拍一区二区三区| 日韩三级av在线播放| 国内精品写真在线观看| 国产欧美日韩另类视频免费观看| 99久久99久久精品国产片果冻| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 色呦呦日韩精品| 五月婷婷激情综合网| 欧美一区二区三区精品| 国产一区二区视频在线播放| 中文字幕不卡在线播放| 日本乱人伦一区| 日韩vs国产vs欧美| 久久久久国产精品厨房| 96av麻豆蜜桃一区二区| 亚洲成人先锋电影| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 久久婷婷一区二区三区| 91亚洲精华国产精华精华液| 亚洲午夜激情网页| 日韩精品一区二区三区在线| 国产91精品在线观看| 亚洲欧美激情小说另类| 欧美一区二区三区爱爱| 国产美女视频91| 亚洲精品视频在线观看免费| 欧美一区二区三区在线看| 成人污污视频在线观看| 亚洲一区二区中文在线| 久久女同精品一区二区| 91福利国产成人精品照片| 日本欧美久久久久免费播放网| 国产欧美精品区一区二区三区 | 欧美美女bb生活片| 极品瑜伽女神91| 亚洲欧美另类小说视频| 日韩女优电影在线观看| 91免费在线视频观看| 免费国产亚洲视频| 亚洲男帅同性gay1069| 亚洲精品一区二区三区蜜桃下载| 99国产麻豆精品| 美女在线一区二区| 日韩毛片一二三区| 欧美成人官网二区| 在线亚洲精品福利网址导航| 国产乱码一区二区三区| 亚洲成人先锋电影| 亚洲欧美一区二区在线观看| 欧美成人精精品一区二区频| 91黄色免费观看| 国产成人精品网址| 无吗不卡中文字幕| 亚洲日本va午夜在线电影| 精品国产乱子伦一区| 欧美在线一二三四区| 岛国av在线一区| 久久99热这里只有精品| 亚洲成人动漫av| 亚洲人吸女人奶水| 久久久99免费| 日韩一区二区三区观看| 色999日韩国产欧美一区二区| 国产成人午夜视频| 麻豆国产精品官网| 天堂成人免费av电影一区| 亚洲欧美电影一区二区| 蜜臀av亚洲一区中文字幕| 日韩一区有码在线| 国产午夜精品理论片a级大结局 | 欧美日本在线视频| 99久久精品免费| 国产精品18久久久久久久久久久久 | 亚洲视频 欧洲视频| 欧美国产丝袜视频| 精品成人在线观看| 日韩一区二区三区视频| 欧美片网站yy| 欧美亚洲综合网| 91视频观看免费| caoporm超碰国产精品| 夫妻av一区二区| 国产传媒日韩欧美成人| 国产一区二区免费看| 麻豆精品一二三| 日韩电影免费一区| 亚洲444eee在线观看| 亚洲国产精品一区二区www| 亚洲激情图片qvod| 亚洲人亚洲人成电影网站色| 综合分类小说区另类春色亚洲小说欧美| 久久久亚洲午夜电影| 久久这里只有精品首页| 精品国产乱码久久久久久闺蜜| 在线播放国产精品二区一二区四区| 色综合天天综合网天天狠天天| yourporn久久国产精品| av在线综合网| 成人精品免费视频| 成人综合婷婷国产精品久久蜜臀 | 精品中文字幕一区二区小辣椒| 蜜桃av噜噜一区二区三区小说| 日韩av电影一区| 麻豆精品久久久| 免费高清视频精品| 久久99精品久久久久久动态图| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产成人综合在线观看| 国产成人午夜电影网| 国产mv日韩mv欧美| 不卡的av中国片| 91免费看`日韩一区二区| 色哟哟亚洲精品| 欧美三级视频在线播放| 91精品午夜视频| 久久夜色精品国产噜噜av| 国产嫩草影院久久久久| 中文字幕在线一区| 亚洲免费三区一区二区| 五月婷婷综合激情| 久久精品国产成人一区二区三区| 国内精品在线播放| 成人精品免费看| 色嗨嗨av一区二区三区| 欧美日韩一区视频| 91精品国产福利| 久久久久综合网| 日韩理论在线观看| 视频一区免费在线观看| 极品瑜伽女神91| 91丨porny丨国产入口| 精品视频免费在线| 精品国免费一区二区三区| 久久精品水蜜桃av综合天堂| 亚洲欧美在线视频观看| 亚欧色一区w666天堂| 久久99国产精品免费| 成人午夜短视频| 欧美三区免费完整视频在线观看| 69堂成人精品免费视频| 国产色婷婷亚洲99精品小说| 亚洲精品福利视频网站| 免费一级片91|