當前位置:編程學習大全網 - 編程軟體 - 用C或c++寫壹個帶計算器功能的程序,需要壹行計算,用“=”輸出結果。有什麽好主意?

用C或c++寫壹個帶計算器功能的程序,需要壹行計算,用“=”輸出結果。有什麽好主意?

可以寫成二叉樹。

定義表達式結構類型,例如:

typedef?struct?雲酸

{

//如果是單次運算,比如1+2,那麽num 1 = 1;num2 = 2

int?num 1;?//左子運算符為0時直接取此值。

int?num2?//右子運算符為0時直接取此值。如果為空,則只有壹個數值運算。

struct?雲算?*父親;//父親:如果上層有表達式,指向上層。

struct?雲算?*兄弟;//兄弟:如果有其他同級表達式,指向表達式結構。

//如果是復合運算,為它創建壹個左子和壹個右子,指向子,讓子指向父。

struct?雲算?*左;//左邊的兒子

struct?雲算?*對;//對兒子

夏爾?FH;//操作符號

} YS;根據優先級,分解多個運算符的公式,如2 ^ 2+(√4-1)。

從運算順序最低的運算符號中找到'+',創建樹頂點結構,FH = '+';父親= NULL兄弟= NULL帶有left =(2 ^ 2)的結構;右=(√4-1)結構;

(2 ^ 2)的結構:FH =“”;num 1 = 2;num2 = 2父=最頂層結構;有兄弟的結構=(√4-1);Left=新節點fh設置為0;右=新節點fh設置為0;

(√4-1)的結構:FH = '-';num 2 = 1;父=最頂層結構;結構同brother=(2^2 2);left=√4的結構;右=新節點fh設置為0;

√4的結構:FH = '√';num 1 = 4;有父的結構=(√4-1);兄弟= NULLLeft=新節點fh設置為0;右=空;

以此類推,以上只是展示了樹形結構的建立。

您解析字符串,從操作順序中的最後壹個字符開始拆分並創建樹的頂部節點,然後依次向下構建樹。

最後,遞歸函數或循環可用於遍歷樹的節點進行操作。

  • 上一篇:主角是壹只叫什麽迪的狗的是什麽動畫片?
  • 下一篇:sql 如何查詢包含某壹字段的值?
  • copyright 2024編程學習大全網