ab.com コミュニティ

ActiveBasicを通したコミュニケーション
前回の訪問日時: 2019年1月21日(月) 18:14 現在時刻 - 2019年1月21日(月) 18:14

All times are UTC+09:00




 [ 4 件の記事 ] 
作成者 メッセージ
 記事の件名: 式の計算をする
投稿記事Posted: 2006年10月20日(金) 17:11 
オフライン

登録日時: 2005年5月31日(火) 22:17
記事: 27
住所: 山口
式を計算するコードです。
これを発展させればインタプリタも夢じゃない?
ボタン、テキストボックス、ラベルを各1つ使います。
テキストボックスに式を入力します。
(),+,-,*,/,数値のみが使用可能。
数値は自然数のみです。(0を含む)
空白を間にはさむことはできません。

ボタンを押すとラベルに答えが求まります。

たとえばテキストボックスに
10+2*3
入力しボタンを押せば
16がラベルにセットされます。

_________________
今日も元気にABLife


ページトップ
   
 
 記事の件名:
投稿記事Posted: 2007年8月09日(木) 09:41 
古いバージョンは知りませんが、ABのVerによる言語仕様の違いかな?

とりあえず、動くようにしてみました。
参考として古いコードをコメントにしておきましたが、見にくいと思いますので削除してください。

勉強との事なので、解説はしません。
じっくり解読してください。


ページトップ
   
 
 記事の件名:
投稿記事Posted: 2007年8月09日(木) 09:44 
Yoshi様

書き込みミスです。
申し訳ありません。


ページトップ
   
 
投稿記事Posted: 2009年1月18日(日) 14:27 
オフライン

登録日時: 2005年7月19日(火) 07:02
記事: 183
住所: 宮城県
ここの逆ポーランド表記への変換の続きですが、
変換ではなく式計算の実行が焦点なので、こちらに投稿いたします。

上記のリンク先で定義している、逆ポーランド表記変換クラス
「StringCalc_ReversePolishNotation」を用いて、
実数の四則算を行う関数「Calc_ReversePolishEx」です。
数値は実数、演算子は「+,-,*,/,^」を利用可能です。

---< 関数の定義 >---
コード:
Function Calc_ReversePolishEx( pobjQueue As *StrQueue, ByRef xResult As Double, ppszFuncArray As *BytePtr, pfuncArray As *PFunc_StrCalcElemR ) As Char

pobjQueue As *StrQueue      ・・・逆ポーランド表記の計算式が格納されたキュー
ByRef xResult As Double      ・・・計算結果を格納する変数
ppszFuncArray As *BytePtr    ・・・対応する関数名を定義した配列
pfuncArray As *PFunc_StrCalcElemR ・・・関数の処理を定義した配列

返り値:成功=TRUE, 失敗=FALSE

# 参考:関数を考慮しないパタン
# Function Calc_ReversePolish( pobjQueue As *StrQueue, ByRef xResult As Double ) As Char
------

関数Calc_ReversePolishExのコードは以下です。

例として、「(5+7)*sin(pi*0.5)-4」を計算します。(解=8)
対応している関数は Cos, Sin のみです。
他の関数(√とかTanとか)を対応させる場合は、コードの「※1」に処理を
追加してください。いくつでも対応可能です。

なお、エラー処理は未完です。。。(オーバーフローした場合、返り値はTRUEだが、計算結果が不正)

以上です。


ページトップ
   
 
 [ 4 件の記事 ] 

All times are UTC+09:00


オンラインデータ

このフォーラムを閲覧中のユーザー: CCBot, SemrushBot & ゲスト[0人]


トピック投稿: 不可
返信投稿: 不可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by KONISHI Yohsuke