命令列版計算器

2021-10-10 17:11:14 字數 2038 閱讀 2376

最近嘗試做了乙個簡易計算器,特來分享一下。

支援連續的表示式,括號,負數,小數。

使用常規解法,先算最裡面的括號,先乘除在加減。

對於乙個不含括號的表示式,就是多個乘除式的相加,

如:a*b+b*c/d-e

先計算各乘除式的和,再將結果相加減,得到該式結果替換到原始表示式,

如此遞迴直到不含括號為止,再次計算即可得到最終結果

// demo.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。

//#include

#include

#include

#include

#include

using

namespace std;

/*分割字串

*/vector

c_split

(const

char

* in,

const

char

* delim)

;return vector;}

/*計算連續乘除式

*/double

fun1

(string str)}if

((operators.

empty()

))double result =

atof

(nums.at(

0).data()

);for(

int i =

0; i < operators.

size()

; i++

)else

}return result;}/*

計算連續加減式

*/double

fun2

(string str)

} nums.

push_back

(str.

substr

(p,str.

size()

-1))

;if((operators.

empty()

))double result =

fun1

(nums.at(

0));

for(

int i =

0; i < operators.

size()

; i++

)else

}return result;}/*

遞迴去除括號

檢測最內部的括號,傳入fun2進行加減計算

*/string fun

(string str)

}for

(int i = p; i < str.

size()

; i++)}

if(p ==

0&&q==0)

string stepstr = str.

substr

(p +

1, q - p -1)

;double stepresult =

fun2

(stepstr)

; string str1 = str.

substr(0

, p)

; string str2 = str.

substr

(q +

1, str.

size()

-(q +1)

);ostringstream mstream;

mstream << str1 <<

to_string

(stepresult)

<< str2;

return

fun(mstream.

str())

;}intmain

(int argc,

char

* ar**)

}

csdn

github位址

命令列 計算器

using system using system.collections.generic using system.text namespace calc console.writeline 請再次輸入乙個數字。ls s console.readline trim li s convert.toi...

linux命令列計算器

下面總結linux下的三個命令,來介紹一下linux下的計算方法 1 bc bc在預設的情況下是個互動式的指 令。在bc工作環境下,可以使用以下計算符號 加法 減法 乘法 除法 指數 餘數 一行輸入多個計算,用 相隔 quit 退出 scale 3 設小數字 不進行互動而直接計算出結果 echo s...

linux BC命令列計算器

1.基本使用 bc 5 4 20 bc 5 4 9 bc 5 4 1或者 echo 5 4 bc 20 echo 5 4 bc 9 echo 5 4 bc 1 也能夠把算式寫到檔案中面。然後一次計算。cat calcfile 5 56 7 bc calcfile 1013也能夠使用here 命令 b...