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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.cpp

?? 表達式求值的小程序源碼,呵呵.獻丑了.高手就不用看了.
?? CPP
字號:
#include<iostream>
#include<stdlib.h>
#include<math.h>
//-------------------------------
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
//------------------------
typedef struct{
	float *base;
	float *top;
	int size;
}OpndStack;

typedef struct{
	char *base;
	char *top;
	int size;
}OptrStack;
//--------------------------------
typedef int Status;
using namespace std;


//--------------STACK OPERATE-----------------------------------------------------------------
//--------------------InitStack---------------------
Status InitStack(OpndStack &s){
	s.base=(float*)malloc(STACK_INIT_SIZE*sizeof(float));
	if(s.base==NULL)exit(OVERFLOW);
	s.top=s.base;
	s.size=STACK_INIT_SIZE;
	return(OK);
}
Status InitStack(OptrStack &s){
	s.base=(char*)malloc(STACK_INIT_SIZE*sizeof(char));
	if(s.base==NULL)exit(OVERFLOW);
	s.top=s.base;
	s.size=STACK_INIT_SIZE;
	return(OK);
}
//------------------Push-------------------------
Status Push(OpndStack &s,float e){
	if(s.top-s.base>=s.size){
		s.base=(float*)malloc(STACKINCREMENT*sizeof(float));
		if(!s.base)exit(OVERFLOW);
		s.top=s.base+s.size;
	}
	*s.top++=e;
	return(OK);
}
Status Push(OptrStack &s,char e){
	if(s.top-s.base>=s.size){
		s.base=(char*)malloc(STACKINCREMENT*sizeof(char));
		if(!s.base)exit(OVERFLOW);
		s.top=s.base+s.size;
	}
	*s.top++=e;
	return(OK);
}
//----------------------GetTop----------------------
float GetTop(OpndStack &s){
	if(s.top==s.base)return 0;
	return (*(s.top-1));
}
char GetTop(OptrStack &s){
	if(s.top==s.base)return ERROR;
	return *(s.top-1);
}
//---------------------Pop----------------
Status Pop(OpndStack &s,float &e){
	if(s.top==s.base)return ERROR;
	e=*--s.top;
	return OK;
}

Status Pop(OptrStack &s,char &e){
	if(s.top==s.base)return ERROR;
	e=*--s.top;
	return OK;
}

//---------------tell wether the charactor is an operator---------------------------------------
Status InOptr(char b){
	if(b=='+'||b=='-'||b=='*'||b=='/'||b=='('||b==')'||b=='#')
		return(TRUE);
	else
		return FALSE;
}

//-----------------------TRANSFORM CHARACTORS TO NUMBERS-------------------------------------
float transform(char *c,int &count){
	char *q;
	int n,k,l;
	float integer=0,decimal=0;
	for(q=c,n=0;!InOptr(*q)&&*q!='#';n++,q++);
	for(k=1;k<n+1&&*(c+k-1)!='.';k++);
	if(k>n)//k=n+1
		for(l=1;l<k;l++){
			integer=integer+(c[l-1]-48)*pow(10.0F,k-l-1.0F);
		}
	if(k==n){
		for(l=1;l<k;l++){
			integer=integer+(c[l-1]-48)*pow(10.0F,k-l-1.0F);
		}
	}		
	if(k<n&&k>1){
		for(l=1;l<k;l++)
			integer=integer+(c[l-1]-48)*pow(10.0F,k-l-1.0F);
		for(l=1;l<n-k+1;l++)
			decimal=decimal+(c[k+l-1]-48)*pow(10.0F,(float)(-l));
	}
	if(k==1){
		for(l=1;l<n;l++)
			decimal=decimal+(c[l]-48)*pow(10.0F,(float)(-l));
	}
	count=n;
	return(integer+decimal);

}

//--------------------get the PRI ----------------------------- ------------------------
int f(char e);
char Precede(char a,char b){
	char c[7][7]={{62,62,60,60,60,62,62},{62,62,60,60,60,62,62},
					{62,62,62,62,60,62,62},{62,62,62,62,60,62,62},
					{60,60,60,60,60,61,0},{62,62,62,62,0,62,62},
					{60,60,60,60,60,0,61}};
	return(c[f(a)][f(b)]);
}

int f(char e){
	if(e=='+')return(0);
	if(e=='-')return(1);
	if(e=='*')return 2;
	if(e=='/')return 3;
	if(e=='(')return 4;
	if(e==')')return 5;
	if(e=='#')return 6;
	else exit(0);
}

//-----------------get the answer by using the numbers and operator----------
float Operate(float a,char theta,float b)
{
	switch(theta)
	{
	case'+':
		return(a+b);
	case'-':
		return(a-b);
	case'*':
		return(a*b);
	case'/':
		return(a/b);
	default:
		cout<<"the expression have something wrong\n"<<endl;
		exit(0);
	
	}
}

//--------use the string to get the answer-------------
float EvaluateExpression(char *c,int n){
	int i=0,count;
	char theta;
	float e,a,b;
	OptrStack Optr;
	OpndStack Opnd;
	InitStack(Optr);
	InitStack(Opnd);
	Push(Optr,'#');
	while(c[i]!='#'||GetTop(Optr)!='#'){
		if(i>n){
			cout<<"You forgot add the sign'#' after the expression.Please check it and add the sign'#'at the end of the expression..\n";
			exit(0);
		}
		if(!InOptr(c[i])){
			e=transform(&c[i],count);
			i=i+count;
			Push(Opnd,e);
		}
		else
			switch(Precede(GetTop(Optr),c[i])){
			case'<':
				Push(Optr,c[i]);
				i++;
				break;
			case'=':
				Pop(Optr,theta);
				i++;
				break;
			case'>':
				Pop(Optr,theta);
				Pop(Opnd,a);
				Pop(Opnd,b);
				Push(Opnd,Operate(b,theta,a));
				break;
			}//switch
	}//while
	if(Opnd.top-Opnd.base!=1||Optr.top!=Optr.base+1){
		cout<<"sorry,the expression you input have something wrong.Please check it and reactive the program..\n";
		exit(0);
	}
	return(GetTop(Opnd));
}//EvaluateExpression

//------------main----------------
int main(){
	int n=0,i=0;
	char c[100];
	cout<<"please input the expression :\n (ending by the charator '#')"<<endl;
	for(cin>>c[0];c[n]!='#';n++,cin>>c[n]);
	for(;i<n;i++){
		if(!(InOptr(c[i])||(c[i]>47&&c[i]<58)||c[i]=='.')){
			cout<<"there are some irregular numbers in your expression.please check it and reinput."<<endl;
			exit(0);
		}
	}
	cout<<"the answer is :\n"<<EvaluateExpression(c,n)<<endl;
	return(0);
}

	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产成人av好男人在线观看| 国产v综合v亚洲欧| 久久99精品国产.久久久久久| 国产裸体歌舞团一区二区| www.色综合.com| 在线播放/欧美激情| 国产夜色精品一区二区av| 亚洲欧美日韩综合aⅴ视频| 日韩va欧美va亚洲va久久| 国产91色综合久久免费分享| 欧美午夜在线观看| 久久精品无码一区二区三区| 亚洲一区在线视频观看| 久久99久久99| 色老头久久综合| 精品久久久久av影院| 亚洲日穴在线视频| 国产做a爰片久久毛片| 色素色在线综合| 久久久精品日韩欧美| 午夜电影网一区| 成人午夜电影小说| 日韩欧美另类在线| 亚洲午夜一二三区视频| 成人在线视频一区| 精品欧美乱码久久久久久1区2区| 亚洲麻豆国产自偷在线| 国产精品影音先锋| 欧美欧美午夜aⅴ在线观看| 国产精品国产三级国产| 国模大尺度一区二区三区| 欧美日韩日日摸| 亚洲欧洲成人精品av97| 国产麻豆精品视频| 7777精品伊人久久久大香线蕉经典版下载 | 欧美日本视频在线| 国产精品国产自产拍在线| 激情五月婷婷综合网| 欧美日韩成人综合天天影院 | 色综合激情五月| 国产亲近乱来精品视频| 日韩制服丝袜先锋影音| 一本一本大道香蕉久在线精品| 国产亚洲一区二区三区| 九色|91porny| 7777精品伊人久久久大香线蕉完整版 | 紧缚奴在线一区二区三区| 欧美日韩在线一区二区| 亚洲欧美一区二区三区国产精品| 国产一区二区伦理| 欧美变态凌虐bdsm| 青椒成人免费视频| 91精品国产91久久久久久最新毛片| 亚洲综合一二区| 色久综合一二码| 亚洲你懂的在线视频| 91网页版在线| 亚洲欧美日韩久久| 91麻豆国产精品久久| 亚洲欧洲精品一区二区三区| 成人精品视频.| 国产精品嫩草99a| 国产 欧美在线| 亚洲国产激情av| 国产成人精品免费视频网站| 久久久高清一区二区三区| 狠狠色丁香九九婷婷综合五月 | 国产最新精品免费| 精品国产乱码久久久久久久 | 国产午夜精品福利| 国产精品主播直播| 国产欧美综合在线观看第十页| 久久99精品国产.久久久久久| 欧美变态口味重另类| 国产尤物一区二区在线| 久久精品一区蜜桃臀影院| 国产91精品一区二区麻豆亚洲| 欧美韩日一区二区三区| 成人免费视频免费观看| 国产精品成人免费| 91理论电影在线观看| 一区二区三区欧美亚洲| 欧美视频一区二| 日韩精品电影在线观看| 欧美tickling挠脚心丨vk| 国产一区高清在线| 国产精品福利一区二区三区| 一本一本久久a久久精品综合麻豆| 一区二区三区成人| 欧美一级片在线看| 国产一区二区在线观看免费| 国产情人综合久久777777| 91麻豆免费看片| 三级不卡在线观看| 久久久国产精品午夜一区ai换脸| 成人精品视频一区二区三区尤物| 亚洲黄色免费网站| 日韩三级视频中文字幕| 国产91对白在线观看九色| 亚洲精品久久久蜜桃| 制服丝袜成人动漫| 国产91富婆露脸刺激对白| 亚洲欧美一区二区三区极速播放 | 欧美aⅴ一区二区三区视频| 久久久久久久网| 91网址在线看| 毛片av中文字幕一区二区| 99精品欧美一区二区蜜桃免费| 亚洲欧洲av在线| 欧美日韩一区二区在线观看视频| 另类小说图片综合网| 国产精品嫩草久久久久| 欧美色综合影院| 国产福利一区在线| 一区二区三区在线免费视频 | 日产国产高清一区二区三区| 欧美电影免费观看高清完整版| 成人免费福利片| 日韩av网站免费在线| 国产精品久久久久久久久久免费看| 欧美性大战久久| 国产成人h网站| 亚洲成人av一区二区| 2022国产精品视频| 欧美在线视频全部完| 久久成人免费网站| 亚洲综合自拍偷拍| 久久影院午夜论| 欧美日韩成人一区| 不卡免费追剧大全电视剧网站| 天天综合天天做天天综合| 中文文精品字幕一区二区| 欧美日韩一区不卡| a级精品国产片在线观看| 美女网站视频久久| 亚洲已满18点击进入久久| 久久久亚洲精品一区二区三区| 欧美日韩国产一区| 99vv1com这只有精品| 久久国产欧美日韩精品| 亚洲中国最大av网站| 国产女主播视频一区二区| 91麻豆精品国产91| 欧美亚一区二区| 国产999精品久久久久久| 免费看日韩a级影片| 亚洲在线视频一区| 国产精品久久久久影院亚瑟| 久久综合色播五月| 日韩欧美一二三四区| 欧美色成人综合| 色婷婷综合激情| 97久久精品人人爽人人爽蜜臀| 国产精品 日产精品 欧美精品| 蜜桃视频在线观看一区二区| 亚洲国产精品一区二区www在线| 国产精品久久久久久久久搜平片 | 风间由美一区二区av101| 日本不卡不码高清免费观看| 亚洲高清视频在线| 一区二区三区国产豹纹内裤在线| 中文字幕一区二区在线观看| 国产欧美日韩另类视频免费观看| 精品美女一区二区| 欧美一区在线视频| 欧美日产国产精品| 欧美色成人综合| 欧美色手机在线观看| 欧美性欧美巨大黑白大战| 91免费观看视频在线| jlzzjlzz亚洲女人18| 岛国一区二区三区| 成人精品鲁一区一区二区| 国产99久久久国产精品免费看| 国产福利91精品一区二区三区| 国产精品66部| 国产成人免费视频网站| 国产精品白丝jk黑袜喷水| 国产精品综合久久| 国v精品久久久网| 成人av先锋影音| 色综合久久中文综合久久牛| 99精品欧美一区二区三区小说| 91麻豆免费看片| 欧美在线高清视频| 欧美日韩成人综合在线一区二区| 欧美美女bb生活片| 欧美一级高清片在线观看| 欧美本精品男人aⅴ天堂| 久久综合一区二区| 国产欧美一区二区精品仙草咪| 国产精品免费免费| 亚洲女与黑人做爰| 五月天丁香久久| 蜜臀av一区二区| 国产ts人妖一区二区| 91视视频在线直接观看在线看网页在线看| 91免费看片在线观看| 欧美日韩成人在线| 久久综合色播五月|