做乙個iOS的簡單計算器 二

2021-07-27 08:43:13 字數 2258 閱讀 9054

//定義乙個處理基本操作的類

class

calculatetool: nsobject

//初始化運算子棧

func

initoptrstack

() //壓入運算數

func

pushoperand

(operand:string)

//壓入運算子

func

pushoperator

(optr:string)

//彈出乙個運算數,返回彈出數:小數點也是數

func

popoperand

() -> float

return

0.0 }

//彈出乙個運算子

func

popoperator

() -> string

return

"" }

//取棧頂運算數

func

gettopoperand

() -> float

return

0.0 }

//取棧頂運算子

func

gettopoperator

() -> string

return

"" }

//判斷字串是否為運算子

func

isoperator

(c:string)

->bool

else

}//判斷運算子的優先順序:棧內和棧外的區別

func

precedeinstack

(s:string)

-> int

}func

precedeoutstack

(s:string)

-> int

}//進行單獨的運算

func

operate

(x:float,opr:string,y:float)

-> float

else

break

default:

result = 0

break

}return result!

}}

然後是乙個處理運算表示式的類。

class

calculateresult: nsobject

//如何排除異常的表示式,包括小數點,除以0,其他格式

func

calculatewithstring

(s:string)

-> float

else

iffloat(firstelement!)==nil

//如果是運算子,則比較優先順序;多個小數點的情況

//從符號棧彈出乙個運算子,從物件棧彈出2個運算元,運算結果壓入物件棧

else

if calculatetool.precedeinstack(topoptr)>calculatetool.precedeoutstack(firstelement!)

calculatetool.pushoperand(string(tempresult))

continue

}else

//兩個運算子相等時,從運算棧抵消

}else

//如果運算數則直接入棧,如果有兩個小數點需要報錯

}//上述步驟結束後那麼剩下的運算子必然有序排列:從運算子棧彈出乙個運算子,從運算數棧彈出兩個運算數,將結果壓入運算數

while calculatetool.gettopoperator() != ""

result = calculatetool.gettopoperand()

calculatetool.initoptrstack()

calculatetool.initopndstack()

return result

}//將輸入的字串輸出為陣列

func

stringtoarray

(s:string)

-> array}}

else

//如果是運算子

}return stringarray

}}

介面用的uicollectionview,比較簡單的。

用了幾年的object-c,思維習慣上還是轉變不過來,**裡始終有著oc的影子,還在努力更正.

最近稍稍研究了一下js在ios中的應用,有些意思的。過一段時間再發。

python 做乙個簡單的計算器

def jisuanqi 實現加減乘除運算 a,b,c shuru if c z a b print s s 的和為 s a,b,z elif c z a b print s s 的差為 s a,b,z elif c z a b print s s 的積為 s a,b,z elif c z a b ...

乙個簡單的計算器

乙個非常簡單的計算器 來自sololearn 只能進行單一計算 while true print 設定 print enter 增加 to 增加 two numbers print enter 減去 to 減去 two numbers print enter 相乘 to 相乘 two numbers...

20 12 17 基於棧做乙個計算器

package stack public class calculator else else else else index if index expression.length while true num1 numberstack.pop num2 numberstack.pop oper o...