ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 08:01

全ての表示時間は 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 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: DotBot & ゲスト[14人]


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

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean