就不用帖全部**了把,核心**都在了
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 要求能出和真分數 二分之一,十二分之五,等 ...