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

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

?? express1.cpp

?? 這是一個課程設計做的游戲(24點)。挺好玩的哦!有興趣的話
?? CPP
字號:
// Function.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "math.h"
#include "express.h"
#include <ctype.h>


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

IMPLEMENT_SERIAL(CExpression, CObject, 0)

void CExpression::elibmem ( arbore a)
{
if (a==NULL) return;
if (a->left!=NULL) elibmem(a->left);
if (a->right!=NULL) elibmem(a->right);
if (a->operatie == '`')
		delete a->valoarestr;
delete a;
}

CExpression::CExpression()
{
	m_Arbore = NULL;
	m_definitie = "";
	pozitie = 0;
	m_pvariabile = NULL;
}

CExpression::CExpression(CMapVariabile * vars)
{
	m_Arbore = NULL;
	m_definitie = "";
	pozitie = 0;
	m_pvariabile = vars;
}

CExpression::~CExpression()
{
 elibmem (m_Arbore);
}

void CExpression::Serialize(CArchive & ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
		ar << m_definitie;
	}
	else
	{
		// TODO: add loading code here
		ar >> m_definitie;
		m_Arbore = NULL;
		pozitie = 0;
		UpdateArbore();
	}
}

int CExpression::UpdateArbore()
{
	if (m_definitie.IsEmpty())
		return 0;
	elibmem(m_Arbore);
	m_Arbore = NULL;
	pozitie = 0;
	m_Arbore = expresie();
	if (m_definitie[pozitie]!='\0') 
	{
		elibmem(m_Arbore);
		m_Arbore = NULL;
	}

	if (m_Arbore == NULL)
		return pozitie;
	else return -1;
}

CExpression::arbore CExpression::expresie()
{
	arbore nod;
	arbore arb1 = termen();
	arbore arb2;
	if  (arb1 == NULL) return NULL;

	

	while ((m_definitie[pozitie]=='-') || (m_definitie[pozitie]=='+')) 
	{
		nod=new NOD;
		nod->left=arb1;
		nod->operatie=m_definitie[pozitie];
		pozitie++;
		arb2 = termen();
		nod->right=arb2;
		if  (arb2 == NULL) 
		{
			elibmem(nod);
			return NULL;
		}
		arb1 = nod;
	}
	return arb1;
}

CExpression::arbore CExpression::termen()
{
	arbore nod;
	arbore arb1 = putere();
	arbore arb2;
	if  (arb1 == NULL) return NULL;

	

	while ((m_definitie[pozitie]=='*') || (m_definitie[pozitie]=='/')) 
	{
		nod=new NOD;
		nod->left=arb1;
		nod->operatie=m_definitie[pozitie];
		pozitie++;
		arb2 = putere();
		nod->right=arb2;
		if  (arb2 == NULL) 
		{
			elibmem(nod);
			return NULL; 
		}
		arb1 = nod;
	}
	return arb1;
}

CExpression::arbore CExpression::putere()
{
	arbore nod = NULL;
	arbore arb1 = logicalOp();
	arbore arb2;
	if  (arb1 == NULL) return NULL; 

	while (m_definitie[pozitie]=='^') 
	{
		nod=new NOD;
		nod->left=arb1;
		nod->operatie=m_definitie[pozitie];
		pozitie++;
		arb2 = logicalOp();
		nod->right=arb2;
		if  (arb2 == NULL) 
		{
			elibmem(nod);
			return NULL;
		}
		arb1 = nod;
	}
	return arb1;
}


CExpression::arbore CExpression::factor()
{
 arbore nod = NULL,nod2 = NULL,left = NULL;
 while(m_definitie[pozitie] == ' ' && m_definitie[pozitie] != '\0')
	 pozitie++;

 if (m_definitie[pozitie]=='-')
   {
    nod = new NOD;
    left = new NOD;
    left->right=NULL;
    left->left=NULL;
    left->operatie='@';
    left->valoare=-1;
    nod->left=left;
    nod->operatie='*';
    pozitie++;
	nod->right = expresie();
	if (nod->right == NULL) return NULL;
	return nod;   
 }
 if (m_definitie[pozitie]=='(')
    {
      pozitie++;
      nod = expresie();
      if (nod == NULL) return NULL;
	  if (m_definitie[pozitie]!=')')
	  {
		elibmem(nod);
		return NULL;
	  }
	  pozitie++;
	  return nod;
    }
 else if (m_definitie[pozitie]=='|')
	 {
	   pozitie++;
	   nod2 = expresie();
	   if (nod2 == NULL) return NULL;
	   if (m_definitie[pozitie]!='|')
		{
			elibmem(nod);
			return NULL;
		}
	   nod = new NOD;
	   nod->left=nod2;
	   nod->right=NULL;
	   nod->operatie='|';
	   pozitie++;
	   return nod;
	}
     else return identificator();
 return nod;
}

CExpression::arbore CExpression::identificator()
{
	int poz;
	arbore nod = NULL,nod2 = NULL;
	arbore result = NULL;
	poz=pozitie;
	SkipSpaces();
	if (m_definitie[pozitie]=='\0') result  = NULL;
	if (isdigit(m_definitie[pozitie]))
		{
			while  ((isdigit(m_definitie[pozitie]) || (m_definitie[pozitie]=='.')))
					 pozitie++;
			nod = new NOD;
			nod->left = NULL; 
			nod->right = NULL;
			nod->operatie = '@';
			nod->valoare = atof(m_definitie.Mid(poz,pozitie-poz));
			result = nod;
		}
	if (isalpha(m_definitie[pozitie]))
	{/*此處可添加代碼以處理函數*/}
	SkipSpaces();
	return result;
        
}

int CExpression::ChangeExpression(CString & expresie)
{
	m_definitie = expresie + '\0' + '\0';
	return UpdateArbore();
}

int code;

int CExpression::Value(double& valoare)
{
  code=0;
  if (m_Arbore == NULL) return -1;
  valoare=vexp(m_Arbore);
  return (code);
}


double CExpression::vexp ( arbore a )
{
double v;
if (a->operatie==NULL) {code=10;return 0;}
switch(a->operatie) 
 {
 case '+' : return( vexp(a->left)+vexp(a->right) );
 case '-' : return( vexp(a->left)-vexp(a->right) );
 case '*' : return( vexp(a->left)*vexp(a->right) );
 case '/' : v=vexp(a->right) ;
			 if (v==0)
			 {code=DIVISION_BY_0;return -vexp(a->left)/0.001;}
			 else
				return(vexp(a->left)/v);
 case 153 : v=vexp(a->left) ;
			 if (v<0) {code=INVALID_DOMAIN;return 0;}
			 else return(sqrt(v));
 case 154 : v=vexp(a->left) ;
			 if (v<=0) {code=INVALID_DOMAIN;return 0;}
			 else return(log(v));
 case '|' : return(fabs(vexp(a->left)));
 case '@' : return (a->valoare);
 //logical operations evaluation
 case '<' : return( vexp(a->left)<vexp(a->right) );
 case '>' : return( vexp(a->left)>vexp(a->right) );
 case '!' : return(!vexp(a->right)) ;
 
 default  : {
				if (m_pvariabile==NULL) 
				{
					code=UNDEFINED_VARIABLE;
					return 0;
				}
				CValue *valoare;
				if (!m_pvariabile->Lookup(*a->valoarestr,valoare))
				{
					code=UNDEFINED_VARIABLE;
					return 0;
				}
				else 
				return valoare->GetValue();
			}
 }
}


CExpression::arbore CExpression::GetArbore()
{
	return m_Arbore;
}


CExpression::CExpression(CExpression & expresie)
{
	*this = expresie;
}

CExpression::arbore CExpression::CloneTree()
{
	return clone(m_Arbore);	
}

void CExpression::AtachVariables(CMapVariabile * vars)
{
	m_pvariabile = vars;
}

CExpression::arbore CExpression::clone(arbore arb)
{
	if (arb == NULL)
		return NULL;
	arbore clonArb = new NOD;
	*clonArb = *arb;
	clonArb->left = clone(arb->left);
	clonArb->right = clone(arb->right);
	return clonArb;
}

CExpression& CExpression::operator=(CExpression &expr)
{
	m_definitie = expr.m_definitie;
	m_pvariabile = expr.m_pvariabile;
	pozitie = 0;
	m_Arbore = expr.CloneTree();
	return *this;
}

void CExpression::SkipSpaces()
{
	while (m_definitie[pozitie]==' ' && m_definitie[pozitie]!='\0')
		pozitie ++;
}

CExpression::arbore CExpression::logicalOp()
{
	arbore nod;
	arbore arb1 = sgOp();
	arbore arb2;
	if  (arb1 == NULL) return NULL;

	while ((m_definitie[pozitie]=='<') || (m_definitie[pozitie]=='>')) 
	{
		nod=new NOD;
		nod->left=arb1;
		nod->operatie=m_definitie[pozitie];
		pozitie++;
		arb2 = sgOp();
		nod->right=arb2;
		if  (arb2 == NULL) 
		{
			elibmem(nod);
			return NULL; 
		}

		arb1 = nod;
	}
	return arb1;
}

CExpression::arbore CExpression::sgOp()
{
	arbore nod = NULL;
	arbore arb2;
	if ((m_definitie[pozitie]=='!')) 
	{
		nod=new NOD;
		nod->left=NULL;
		nod->operatie=m_definitie[pozitie];
		pozitie++;
		arb2 = sgOp();
		nod->right=arb2;
		if  (arb2 == NULL) 
		{
			elibmem(nod);
			return NULL;
		}
	}
	else 
		nod = factor();
	return nod;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品毛片大码女人| 极品美女销魂一区二区三区| 国产激情一区二区三区四区 | 日本亚洲欧美天堂免费| 欧美乱熟臀69xxxxxx| 丝袜亚洲另类丝袜在线| 日韩欧美高清在线| 国产伦精品一区二区三区免费迷| 精品88久久久久88久久久| 国产寡妇亲子伦一区二区| 中文字幕一区二区在线观看| 色婷婷国产精品综合在线观看| 亚洲精选在线视频| 91精品麻豆日日躁夜夜躁| 韩日精品视频一区| 亚洲天堂av老司机| 69av一区二区三区| 夫妻av一区二区| 亚洲另类在线制服丝袜| 日韩一区二区三区免费观看| 精品一区二区日韩| 综合av第一页| 日韩欧美一级在线播放| k8久久久一区二区三区| 亚洲一级二级三级| 久久麻豆一区二区| 欧美午夜精品理论片a级按摩| 蜜桃av一区二区在线观看 | 久久久久久免费| 91精品福利视频| 国内久久婷婷综合| 亚洲美腿欧美偷拍| 777亚洲妇女| 91麻豆免费视频| 国产在线看一区| 亚洲电影一区二区| 国产精品色在线| 欧美岛国在线观看| 欧美在线看片a免费观看| 国产精品综合久久| 日本午夜精品视频在线观看 | 欧美日韩国产综合一区二区| 成人激情午夜影院| 精品伊人久久久久7777人| 伊人色综合久久天天人手人婷| 久久一夜天堂av一区二区三区| 欧美日韩三级一区二区| 99久久久无码国产精品| 国产精品77777竹菊影视小说| 午夜一区二区三区在线观看| 亚洲婷婷综合色高清在线| 久久精品视频在线看| 日韩午夜av一区| 欧美丰满高潮xxxx喷水动漫| 在线观看日韩毛片| 91久久精品国产91性色tv| 99精品视频在线免费观看| 国产精品一区二区在线看| 蜜臀va亚洲va欧美va天堂 | 欧美网站一区二区| 91丨porny丨蝌蚪视频| 成人免费视频app| 丰满放荡岳乱妇91ww| 国产一区二区三区免费观看| 精品一区二区在线播放| 久久国产日韩欧美精品| 免费在线观看成人| 老汉av免费一区二区三区| 麻豆国产精品官网| 激情av综合网| 丁香六月综合激情| av不卡在线播放| 日本道精品一区二区三区| 在线视频中文字幕一区二区| 欧美日韩午夜在线| 日韩视频在线观看一区二区| 日韩欧美黄色影院| 久久精品欧美日韩| 中文文精品字幕一区二区| 欧美激情中文字幕一区二区| 国产精品午夜电影| 亚洲精品日韩专区silk| 日韩精品福利网| 国产乱人伦精品一区二区在线观看| 国产一区二区精品久久91| 成人精品高清在线| 欧美三级乱人伦电影| 欧美一区二区福利视频| 国产日产欧美精品一区二区三区| 中文字幕亚洲在| 日韩国产在线观看一区| 国产黄色精品网站| 欧美在线高清视频| 久久久午夜精品| 亚洲国产精品久久久久婷婷884| 奇米精品一区二区三区在线观看 | 久久先锋影音av| 亚洲少妇屁股交4| 毛片基地黄久久久久久天堂| 国产成人精品免费一区二区| 欧美吞精做爰啪啪高潮| 2020国产精品久久精品美国| 日韩美女久久久| 麻豆精品在线播放| 91浏览器入口在线观看| 日韩亚洲欧美成人一区| 亚洲精品欧美激情| 狠狠色丁香九九婷婷综合五月| 91美女片黄在线观看91美女| 精品免费日韩av| 一区二区高清在线| 国产91精品精华液一区二区三区 | 日本不卡中文字幕| 91日韩在线专区| www激情久久| 日韩av电影天堂| 一本一道久久a久久精品综合蜜臀| 欧美一区二区视频在线观看2022 | 国产清纯白嫩初高生在线观看91| 亚洲国产精品影院| 不卡av免费在线观看| 精品国产人成亚洲区| 天天综合网 天天综合色| 91啪在线观看| 国产精品毛片大码女人| 国产成人精品1024| 精品国产髙清在线看国产毛片| 亚洲午夜国产一区99re久久| 日本久久电影网| 最新中文字幕一区二区三区| 国产麻豆精品theporn| 欧美成人女星排行榜| 秋霞午夜鲁丝一区二区老狼| 欧美日韩一区二区三区在线| 亚洲老妇xxxxxx| 色婷婷综合久久久久中文一区二区 | 日韩久久久精品| 日本中文字幕一区| 欧美精品一级二级| 日韩制服丝袜先锋影音| 欧美久久一二区| 天堂资源在线中文精品| 欧美日韩精品欧美日韩精品一| 亚洲精品欧美综合四区| 在线视频欧美精品| 亚洲一区二区高清| 51精品国自产在线| 久久精品国产亚洲aⅴ| 欧美mv日韩mv国产| 国产伦精品一区二区三区视频青涩| 精品成人免费观看| 国产成人精品一区二区三区四区 | 欧美日韩亚洲另类| 日韩成人dvd| 久久先锋影音av鲁色资源网| 丁香婷婷综合色啪| 亚洲日本成人在线观看| 欧美日韩一区二区欧美激情| 青青国产91久久久久久| 26uuu精品一区二区| 97精品视频在线观看自产线路二| 亚洲精品国产第一综合99久久| 欧美日韩国产成人在线91| 狠狠色丁香婷婷综合| 中文字幕一区二区三区视频| 欧美在线视频日韩| 精品综合免费视频观看| 国产精品蜜臀在线观看| 欧美日韩精品久久久| 国产一区二区电影| 国产日韩一级二级三级| 成+人+亚洲+综合天堂| 亚洲精品免费在线观看| 日韩欧美精品在线| 波多野结衣在线一区| 亚洲电影一区二区| 国产视频亚洲色图| 欧美日韩三级一区| 不卡视频免费播放| 久久激情五月婷婷| 亚洲视频在线一区二区| 日韩欧美久久久| 91免费看`日韩一区二区| 天使萌一区二区三区免费观看| 欧美国产丝袜视频| 欧美高清视频一二三区 | 一区二区国产视频| 久久免费电影网| 8x福利精品第一导航| 成年人国产精品| 国产一区二区免费看| 婷婷夜色潮精品综合在线| 中文字幕日本不卡| 精品国产91洋老外米糕| 欧美午夜视频网站| www.亚洲人| 国产一区欧美二区| 全部av―极品视觉盛宴亚洲| 亚洲激情图片小说视频| 亚洲国产岛国毛片在线|