簡易則混合運算

2021-09-13 02:20:37 字數 3060 閱讀 5293

就不用帖全部**了把,核心**都在了

ccalc_nbl::

ccalc_nbl

(void

)ccalc_nbl::

~ccalc_nbl

(void

)//計算四則混合運算

//str 表示式 len:字串長度 result:結果

bool ccalc_nbl::

getcalcresult

(const

char

* str,

int len,

double

* result);if

(initstr

(str, len, calc_str)

)return

calc

(calc_str, len, result)

;return

false;}

//初始化字串 合法性檢測去空格

bool ccalc_nbl::

initstr

(const

char

* str,

int len,

char

* result)

result[index_res]=0

;return

true;}

//根據後輟表示式計算結果

bool ccalc_nbl::

calc

(const

char

* str,

int len,

double

* result)

;char str_t[strmax]=;

stack<

double

> eax;

int index =0;

//將中輟表示式轉換成後輟表示式if(

initcalcstr

(str, len, str_calc,

' ')

)else

//結果入棧if(

!eax.

isfull()

) eax.

push

(n3)

;else

return

false;}

}//返回結果if(

!eax.

isempty()

)*result = eax.

pop();

else

*result =

0.0;

return

true;}

return

false;}

//123 + 4 轉成 123 4 +之後呼叫 同getone

int ccalc_nbl::

getone_calc

(const

char

* str,

int len,

char

* result,

char fenge)

//把中輟表示式轉成後輟表示式

bool ccalc_nbl::

initcalcstr

(const

char

* str,

int len,

char

* result,

char fenge)

; stack<

char

> eax;

//建立棧

while

(str[index]

&& index < len)

//遍歷整個字串

else

else

//棧不為空

//如果沒有 ( 說明不合法

if(topch !=

'(')

return

false;}

else

//不是 )

}//如果是(直接入棧 不是(做完以上操作之後也要入棧

eax.

push

(res[0]

);}}

}}//最後依次出棧作為後輟表示式的一部分

while

(!eax.

isempty()

) result[index2]=0

;return

true;}

//123 + 4 ,result 第一次是123 第二次是 + 第三次是4 返回result長度

int ccalc_nbl::

getone

(const

char

* str,

int len,

char

* result)

while

(gettype

(str[index])==

gettype

(str[0]

)&&gettype

(str[0]

)== number && index < len)

;//首先 除了數字要讀多個字元外其他都只要讀一次。每一次讀取到的字元都是數字,當然讀完整個表示式也就結束了。其次+-*/之後只能是數字

result[index]=0

;return index;

}//返回型別 主要為了 +- */ (可以判斷優先順序

int ccalc_nbl::

gettype

(char ch)

//string轉double

bool ccalc_nbl::

strtodouble

(const

char

* str,

int len,

double

* res)

*res = result;

return

true;}

//unicode轉ansi

char

* ccalc_nbl::

unicodetoansi

(const

wchar_t

* szstr)

四則混合運算類

using system namespace expressionoperate 對公式進行語法檢測 需要檢測的公式 public static bool isrexpression string expression case break case case case if rexpression...

c 四則混合運算

最近因專案需求,做了乙個簡易的四則混合運算解析模組。例如計算表示式 34 300 4 2 300 4 2 注 運算子僅支援 五種型別 public inte ce imixedcalculate t exec string expression 介面實現類 public class mixedcal...

簡易四則運算

本次作業要求來自 一 題目要求 任何程式語言都可以,命令列程式接受乙個數字輸入,然後輸出相應數目的四則運算題目和答案。例如輸入數字是 30,那就輸出 30 道題目和答案。表示式子必須至少有兩個運算子,運算數字是在 100 之內的正整數,答案不能是負數。1 要求能出和真分數 二分之一,十二分之五,等 ...