xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡(jiǎn)介

可以計(jì)算包含加減乘除的算術(shù)表達(dá)式,還可以用來(lái)計(jì)算帶小數(shù)的表達(dá)式,表達(dá)式輸入錯(cuò)誤時(shí)會(huì)提示!

資源截圖

代碼片段和文件信息

#include
#include
#include
#define?Max?30

typedef?struct?node1??/*定義符號(hào)棧*/
{
char?data[Max];
int??top;
}SignSeqStack*SignPSeqStack;

typedef?struct?node2??/*定義數(shù)字棧*/
{
double?data[Max];
int??top;
}NoSeqStack*NoPSeqStack;

SignPSeqStack?SInit()???/*符號(hào)棧的初始化*/
{
????SignPSeqStack?s;
????s=(SignPSeqStack)malloc(sizeof(SignSeqStack));
????if(s)
????????s->top=-1;
????return?s;
}?

NoPSeqStack?NInit()???/*數(shù)字棧的初始化*/
{
????NoPSeqStack?s;
????s=(NoPSeqStack)malloc(sizeof(NoSeqStack));
????if(s)
????????s->top=-1;
????return?s;
}?

void?SPush(SignPSeqStack?schar?x)??/*符號(hào)入棧函數(shù)*/
{
if(s->top==Max-1)
{
printf(“表達(dá)式過(guò)長(zhǎng),不能計(jì)算!“);
return;
}
else
{
s->top++;
s->data[s->top]=x;
}
}

void?NPush(NoPSeqStack?sdouble?x)??/*數(shù)字入棧函數(shù)*/
{
if(s->top==Max-1)
{
printf(“表達(dá)式過(guò)長(zhǎng),不能計(jì)算!“);
return;
}
else
{
s->top++;
s->data[s->top]=x;
}
}

void?SPop(SignPSeqStack?Schar?*x)??/*符號(hào)出棧函數(shù)*/
{
if(S->top==-1)
???????return;
else
{
*x=S->data[S->top];
S->top--;
}
}

void?NPop(NoPSeqStack?Sdouble?*x)??/*數(shù)字出棧函數(shù)*/
{
if(S->top==-1)
???????return;
else
{
*x=S->data[S->top];
S->top--;
}
}

char?Priority(char?s1char?s2)???/*判斷運(yùn)算符優(yōu)先級(jí)*/
{
int?irowcol;
static?char?CH[7]={‘+‘‘-‘‘*‘‘/‘‘(‘‘)‘‘#‘}??/*運(yùn)算符*/
R[7][7]={{‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘}???????/*運(yùn)算符優(yōu)先關(guān)系*/
?????????????{‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘}
?????????????{‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘}
?????????????{‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘}
?????????????{‘<‘‘<‘‘<‘‘<‘‘<‘‘=‘‘/‘}
?????????????{‘>‘‘>‘‘>‘‘>‘‘/‘‘>‘‘>‘}
?????????????{‘<‘‘<‘‘<‘‘<‘‘<‘‘<‘‘<‘}};
????for(i=0;i<7;i++)
????????if(CH[i]==s1)
{
row=i;
break;
}
for(i=0;i<7;i++)
????if(CH[i]==s2)
{
col=i;
break;
}
if(col<7&&row<7)
return?(R[row][col]);
else
return?‘/‘;
}

void?Symbol(char?*chint?*mSignPSeqStack?SNoPSeqStack?N);
?
void?Digital(char?*chint?*mNoPSeqStack?NSignPSeqStack?S)?/*數(shù)字處理函數(shù)*/
{
int?flag=0;
int?a=0;???/*a用于存放數(shù)字的整數(shù)部分*/
double?b=0.0e=0.1;?/*b用于存放數(shù)字的小數(shù)部分*/
if(ch[*m]==‘-‘)
{
if(!(*m==0||ch[*m-1]==‘(‘))???/*判斷“-”是負(fù)號(hào)還是減號(hào)*/
{
Symbol(chmSN);??/*是減號(hào),處理*/
return;
}
else?
{
flag=1;????/*flag=1表示有負(fù)號(hào)*/
(*m)++;
}
}
for(;ch[*m]>=‘0‘&&ch[*m]<=‘9‘;(*m)++)??/*處理整數(shù)部分*/
{
a*=10;
a+=ch[*m]-‘0‘;?
}
if(ch[*m]==‘.‘)????/*判斷有沒(méi)有小數(shù)*/
for(++(*m);ch[*m]>=‘0‘&&ch[*m]<=‘9‘;(*m)++)??/*處理小數(shù)部分*/
{
double?d;
d=double(ch[*m]-‘0‘);
d*=e;
e*=0.1;
b+=d;
}
(*m)--;
if(flag==1)???/*是負(fù)數(shù),將負(fù)數(shù)入棧*/
????NPush(N0.0-(a+b));
else
NPush(Na+b);
}

void?Symbol(char?*chint?*mSignPSeqStack?SNoPSeqStack?N)??/*符號(hào)處理函數(shù)*/
{
double?abc;
int?i=*m;
char?xy;
y=Priority(S->data[S->top]ch[i]);
if(y==‘/‘)?/*處理符號(hào)*/
{
printf(“你輸入的表達(dá)式不合法!將導(dǎo)致計(jì)算錯(cuò)誤!“);
return?;
}
else?if(y==‘<‘)
{
SPush(Sch[i]);
return;
}
else?if(y==‘=‘)
{
SPop(S&x);
????

?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----

?????文件??????50176??2008-03-25?23:21??表達(dá)式求值\表達(dá)式求值.ncb

?????文件??????53248??2008-03-25?23:20??表達(dá)式求值\Debug\vc60.pdb

?????文件?????208986??2008-03-25?23:21??表達(dá)式求值\Debug\表達(dá)式求值.exe

?????文件?????467968??2008-03-25?23:21??表達(dá)式求值\Debug\表達(dá)式求值.pdb

?????文件??????12794??2008-03-25?23:20??表達(dá)式求值\Debug\表達(dá)式求值.obj

?????文件????????254??2008-03-25?23:21??表達(dá)式求值\表達(dá)式求值.plg

?????文件???????4334??2008-01-11?14:48??表達(dá)式求值\表達(dá)式求值.cpp

?????文件???????3451??2008-03-25?23:20??表達(dá)式求值\表達(dá)式求值.dsp

?????文件??????48640??2008-03-25?23:21??表達(dá)式求值\表達(dá)式求值.opt

?????文件????????528??2008-03-25?23:21??表達(dá)式求值\表達(dá)式求值.dsw

?????目錄??????????0??2008-01-10?19:42??表達(dá)式求值\Debug

?????目錄??????????0??2008-01-10?19:42??表達(dá)式求值

-----------?---------??----------?-----??----

???????????????850379????????????????????12


評(píng)論

共有 條評(píng)論

相關(guān)資源