91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 128KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-12
  • 語言: 其他
  • 標簽: 數據結構??

資源簡介

可以計算包含加減乘除的算術表達式,還可以用來計算帶小數的表達式,表達式輸入錯誤時會提示!

資源截圖

代碼片段和文件信息

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

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

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

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

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

void?SPush(SignPSeqStack?schar?x)??/*符號入棧函數*/
{
if(s->top==Max-1)
{
printf(“表達式過長,不能計算!“);
return;
}
else
{
s->top++;
s->data[s->top]=x;
}
}

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

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

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

char?Priority(char?s1char?s2)???/*判斷運算符優先級*/
{
int?irowcol;
static?char?CH[7]={‘+‘‘-‘‘*‘‘/‘‘(‘‘)‘‘#‘}??/*運算符*/
R[7][7]={{‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘}???????/*運算符優先關系*/
?????????????{‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘}
?????????????{‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘}
?????????????{‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘}
?????????????{‘<‘‘<‘‘<‘‘<‘‘<‘‘=‘‘/‘}
?????????????{‘>‘‘>‘‘>‘‘>‘‘/‘‘>‘‘>‘}
?????????????{‘<‘‘<‘‘<‘‘<‘‘<‘‘<‘‘<‘}};
????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)?/*數字處理函數*/
{
int?flag=0;
int?a=0;???/*a用于存放數字的整數部分*/
double?b=0.0e=0.1;?/*b用于存放數字的小數部分*/
if(ch[*m]==‘-‘)
{
if(!(*m==0||ch[*m-1]==‘(‘))???/*判斷“-”是負號還是減號*/
{
Symbol(chmSN);??/*是減號,處理*/
return;
}
else?
{
flag=1;????/*flag=1表示有負號*/
(*m)++;
}
}
for(;ch[*m]>=‘0‘&&ch[*m]<=‘9‘;(*m)++)??/*處理整數部分*/
{
a*=10;
a+=ch[*m]-‘0‘;?
}
if(ch[*m]==‘.‘)????/*判斷有沒有小數*/
for(++(*m);ch[*m]>=‘0‘&&ch[*m]<=‘9‘;(*m)++)??/*處理小數部分*/
{
double?d;
d=double(ch[*m]-‘0‘);
d*=e;
e*=0.1;
b+=d;
}
(*m)--;
if(flag==1)???/*是負數,將負數入棧*/
????NPush(N0.0-(a+b));
else
NPush(Na+b);
}

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

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

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

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

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

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

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

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

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

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

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

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

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

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

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

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


評論

共有 條評論