c# 計算 數學表示式
標量的值 搞個字典《string ,double》
更具 操作符號 ,分割字串
更具 優先順序把資料 push stack
再每次 分別 pop 2個資料,和 乙個操作符,一直到全部結束
效果下圖如圖
部分核心**如下
///
/// 空 stack 返回 true
///
/// 空 stack 返回 true
private
bool
isempty
(stack st)
private
double
getvalue
(string op,
double numfir,
double numsec)
}public
bool
getcompare
(string op,
double numfir,
double numsec)
}public
double
calculate
(list<
string
> liststra)
else
//if operate , caculate
}return
(double
)mystack.
pop();
}public list<
string
>
stringspit
(string strsource)
temp = strsource.
substring
(i,1);
if(!string
.isnullorempty
(temp)
)// 操作符 部分
start = i +1;
lastopindex = i;
break;}
// 會漏掉 最後乙個 操作符後面的東西
if(i == strarray.length -1)
}return liststr;
}
數學計算表示式解析
最近在寫乙個計算器的專案,其中最麻煩的就是數學表達試的解析,用c語言解決問題,每一步基本都要自己實現,非常鍛鍊邏輯能力。用了將近兩個晚上的時間,終於完成了大部分表示式的解析,寫這篇文章來記錄下遇到的問題。涉及到二維指標。主要思想和這篇部落格中的一樣 首先進行括號代換,就是將括號中的表示式單獨計算出來...
數學表示式的計算 使用正規表示式
這種方式的基本思想就是迴圈使用正規表示式找出字串中不帶括號的那一部分,再分析出各個數字和運算子以及函式,並執行運算,然後將結果替換原表示式中相應部分,直到最後不能再進行任何替換。如 3 5 sin 7 9 3 5 sin 7 9 8 sin 7 9 8 sin16 8 sin16 8 0.2879 ...
數學表示式
只做 1或者2操作,使得給定乙個目標數,乙個初始數,使得初始數到目標數的步驟最短。23 52 1 2 1 113 11 1 1 1 222 1 先判斷目標數字和原始數字的大小,然後在判斷目標數是否為奇數,若是,則 1變成偶數在遞迴,在判斷原始數 2是否大於目標數,若不大於,則做乘2的操作。若小於則不...