優化一下上次寫的**,加上了注釋,加強了可讀性和封裝性
#include "reverse_polish.h"
void reverse_polish()
while (*it != '+' && *it != '-') }
return it;
}//計算低階運算
string calculate_add(string &st)
} while (*it != '+' && *it != '-')
if (*it == '+')
else
return to_string(total);
}
主函式和標頭檔案#include "reverse_polish.h"
int main()
#include #include #include #include using namespace std;
typedef std::_string_iterator>> ite;
//獲取數學表示式字串
void reverse_polish();
/*處理括號------------------------------------*/
string main_logic(string &st);
//獲取第乙個反括號前面的第乙個正括號
ite find_start(string &st);
//獲取第乙個反括號
ite find_end(string &st);
//獲取括號前面的字串
string get_start(string &st, ite it);
//獲取括號裡面的字串
string get_mid(ite start, ite end);
//獲取括號後面的字串
string get_end(string &st, ite it);
//檢查括號個數
int check_parentheses(string &st);
/*括號處理完畢--------------------------------*/
//處理不帶括號的表示式分解成第乙個運算元前面和2個運算元和操作符還有第二個運算元後面的一共3個字串
string calculate(string &st);
//獲取第二個運算元後面的符號位置
ite find_calculate_end(string &st);
//獲取第乙個運算元前面的符號位置
ite find_calculate_start(string &st);
//獲取無括號表示式的第乙個運算元前面的字串
string get_calculate_start(string &st,ite it);
//獲取第二個運算元後面的的字串
string get_calculate_end(string &st, ite it);
//獲取2個運算元和操作符的字串
string get_calculate_mid(ite start,ite end);
//計算高階計算*和/
string calculate_high(string &st);
//檢查高階運算子數量
int check_high(string &st);
//計算低階計算+和-
string calculate_low(string &st);
//尋找第二個低階運算運算元後面的位置,可以是字串結尾
ite find_calculate_low_point(string &st);
//計算低階運算子數量,不會把第乙個數的負號當成操作符
int check_low(string &st);
//分解得到2個運算元和乙個操作符的字串
string get_low_first(string &st, ite it);
//第二個運算元後面的字串
string get_low_next(string &st, ite it);
//計算低階運算
string calculate_add(string &st);
數學表示式
只做 1或者2操作,使得給定乙個目標數,乙個初始數,使得初始數到目標數的步驟最短。23 52 1 2 1 113 11 1 1 1 222 1 先判斷目標數字和原始數字的大小,然後在判斷目標數是否為奇數,若是,則 1變成偶數在遞迴,在判斷原始數 2是否大於目標數,若不大於,則做乘2的操作。若小於則不...
JS數學表示式運算
在專案中經常碰到js精度問題,且常用到連續的運算 故寫了個簡單的數學表示式計算,僅支援 計算結果 math.express 3 1 2.3 6 3 5 1 1 1 2 1.9 math.express.add 1.2,3.33 4.53 math.express function 兩個浮點數求和 e...
數學計算表示式解析
最近在寫乙個計算器的專案,其中最麻煩的就是數學表達試的解析,用c語言解決問題,每一步基本都要自己實現,非常鍛鍊邏輯能力。用了將近兩個晚上的時間,終於完成了大部分表示式的解析,寫這篇文章來記錄下遇到的問題。涉及到二維指標。主要思想和這篇部落格中的一樣 首先進行括號代換,就是將括號中的表示式單獨計算出來...