表示式求值

2021-06-27 22:29:43 字數 1146 閱讀 5202

#include

#include

#define n 50     //表示式長度

#define m 10     //括號個數

#define l 10     //區域性結果長度

int operate(char s)

if(t==j)

if(t!=j)

}opera_nd[k] = sum ;  

//現在有k個運算子,k+1乙個運算元

for(t=0 ; t < k ; t++)

if(opera_tor[t]=='/')

}//遇到*或/,則計算,並且兩元素全都變為結果

for( m = t-1;(opera_tor[m]=='*'||opera_tor[m]=='/')&&m>=0 ; m--)

opera_nd[m] = opera_nd[m+1] ; //遇到連著的*和/,則把相關元素全變成結果

sum = opera_nd[0];

for(t=0;t

return sum;

}void main()

i++;

}if(j==0)       //表示式不含(),則退出迴圈

break;

i = m[j-1]+1;       

for(a=0 ; s[i]!=')' ; )   //擷取最先運算的「塊」,把其中的表示式賦給sec

sec[a++]=s[i++];

sec[a]='\0';             //detail

p = operate(sec);         //計算出「塊」的結果

for(a=0;p!=0;a++)         //把結果p各個數字上的數分離

for(b=m[j-1];a>0;)       //把"塊"的結果插入原始表示式

s[b++]=result[--a];

for(c=m[j]+1 ; s[c]!='\0';)//把"塊"的後面的東西前移

s[b++]=s[c++];

s[b]='\0';             //detail

printf("=%s\n",s);      //輸出計算「一次」後的表示式

}printf("=%d\n",operate(s));   //輸出結果

}

表示式求值

程式的說明見清華大學出版社 資料結構 c語言版 include include define stack init size 40 define stackincrement 20 define ok 1 define false 0 typedef structs stack typedef st...

表示式求值

既然是表示式求值,自然需要在記憶體中儲存計算結果以及中間值。在 用c語言寫直譯器 一 中提過 變數要求是若型別,而 c 語言中的 view plaincopy to clipboardprint?in basic io.h define memery size 26 typedef enum var...

表示式求值

寫了乙個下午,各種糾結,各種問,終於搞明白了。但是自己還是想出來的一點東西的。很爽歪歪的,哈哈。先貼第一次的 include include include include include includeusing namespace std char data 7 7 int sign char ...