投稿
あきと SideBurnsM
文字列で計算したいという書き込みを見かけたので「1+2*3/4」のような文字列を渡すと、計算して返してくれる CALC_STRという関数を作ってみました。 サンプルとして数式をそのまま計算する電卓モードと4つの数字を渡して10にできるか確認できるツールを作りました。
10そうだね
プレイ済み
返信[1]
親投稿
あきと SideBurnsM
公開キー【EKK8EEKM】です。
1そうだね
プレイ済み
返信[2]
親投稿
あきと SideBurnsM
A$="(123-45)*67+89" CALC_STR A$ OUT FLAG, ANSWER 数式の文字列には0~9、+-*/ 少数点の「.」が使えます。 FLAGに計算できたかが戻ります。1は成功。0の場合、除算0などで失敗したときです。 1の時はANSWERに計算結果が返ります。 10を作るツールは数字の入れ換えはしていません。4つの数字の間の記号を総当たりしているだけです。
0そうだね
プレイ済み
返信[3]
親投稿
VBSにはあったけど、SmileBASICにはない、 こう言う関数ほしかったんです! ありがとうございます!!!
0そうだね
プレイ済み
返信[4]
親投稿
ちーたけ hello.world256
まだ落としてないんですけどパーサは書いて ます? また、どの様な方式で数式を計算してますか?
0そうだね
プレイ済み
返信[5]
親投稿
あきと SideBurnsM
一文字ずつ数字か記号を判別したあと、プチコンの文字列→数値関数で数値を取得、逆ポーランド式変換、逆ポーランド式計算という流れです。 パーサという程のものではありません。
0そうだね
プレイ済み
返信[6]
親投稿
ちーたけ hello.world256
stackEvaluationですか成程ー。 オイラは再帰下降構文解析のほうが好きですねー。
0そうだね
プレイ済み
返信[7]
親投稿
あきと SideBurnsM
再帰でスリムに書ければカッコ良いんですけどねー。作ってるときに動作確認が楽なのはこっちかなと思ってスタックで書きました。
0そうだね
プレイ済み
返信[8]
親投稿
あきと SideBurnsM
すいません。 計算順序のバグがありました。 修正しました。【NK2K33KP】
0そうだね
プレイ済み
返信[9]
親投稿
電卓できました! スタッフロールに名前乗せておきます。 ありがとうございました!
0そうだね
プレイ済み
返信[10]
親投稿
あきと SideBurnsM
くみこんでもらってありがとうございます。 お役に立ててよかったです。
1そうだね
プレイ済み