表示式求值(整數運算)

2021-07-23 11:48:53 字數 1121 閱讀 9895

可以進行10以上的加減乘除以及括號運算。

十一瘋了七天,趕緊補完了=。=

**如下:

#include #include #include #include #include #include using namespace std;

#define clr(a,b) memset(a,b,sizeof(a))

mapd; //字元到數字的對映,比較大小用

int cmp[7][7] = //優先順序比較,1為大於,0為等於,-1為小於。-2為空 , ,

, ,, //這裡最後乙個元素為空,因為(不可能與#比較 ,

};typedef struct data

data;

typedef struct stacknode //鏈棧

stacknode,*linkstack;

void stackinit(linkstack &s) //初始化棧

void welcome()

void stackpush(linkstack &s,data a) //壓入棧

bool isnum(char ch) //判斷是否為數字

void stacktop(linkstack s,data &t) //取棧頂元素

void stackpop(linkstack &s) //彈出棧頂元素

void stackclear(linkstack s)

int cal(int a,int b,char op)

}void solve(char *str) //計算表示式

i--; //返回最後乙個數字

t.num = num;

stackpush(snum,t); //把數字壓入棧

} else

}} stacktop(snum,t);

cout << t.num << endl;

stackclear(sop);

stackclear(snum);

}int main()

solve(str);

printf ("請輸入的表示式:\n");

} return 0;

}

運算表示式求值模板

表示式計算 使用方法 輸入合法的表示式,加減乘除,可以帶括號,用空格分開數字和符號,1為結束標誌,比如 2 5 3 1 注意 這是用來算具體答案的,不是轉化成字尾表示式輸出的,當然,思想是遞迴建立表示式樹,然後後序遍歷得逆波蘭式,然後用棧計算結果 模板 include include include...

表示式求值

程式的說明見清華大學出版社 資料結構 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...