質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Q&A

解決済

1回答

1385閲覧

VB 回避方法について

Strauss

総合スコア32

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

0グッド

0クリップ

投稿2015/08/06 08:22

こんにちは。電卓を作っている者です。

階乗機能の実装ができましたが、あるコードがある場合とない場合において
動き方が変わってしまうというような状態になってしまいました。

具体的に申しますと、

VB

1 ... 2 'ボタンを押した際、一回目なら「fact(直前に押した数字)」2回目なら「fact(fact(直前に押した数字))」と増やしていく 3 If facts = 0 Then 4 If ope = "C" Then 5 Oncetrage = String.Format("fact({0})", NumberHold) 6 DisplayPassage.Text = Oncetrage 7 Else 8 Oncetrage = String.Format("fact({0})", NumberHold) 9 DisplayPassage.Text &= Oncetrage 10 End If 11 Else 12 If ope = "C" Then 13 Oncetrage = String.Format("fact({0})", Oncetrage) 14 DisplayPassage.Text = Oncetrage 15 Else 16 Dim posPre = DisplayPassage.Text.LastIndexOf(Oncetrage) 17 DisplayPassage.Text = DisplayPassage.Text.Remove(posPre, Oncetrage.Length) 18 Oncetrage = String.Format("fact({0})", Oncetrage) 19 DisplayPassage.Text &= Oncetrage 20 End If 21 End If 22 23 '初期化 24 Ans2 = 0 25 FactValue = 0 26 facts = 1 27 ★beforeIn = "C"★ 28 NumberHold = "C"

★マークで囲っている構文をそのまま残して処理されると
階乗を行った際、例として「8!→9!」とすると
8の階乗の答えが出た後に初期化され9の階乗の答えが出ます。
初期化といっても0に戻らずそのまま8の階乗の続きではなく
一旦区切って9の階乗が出ます。

しかしこの構文があると次のことが起きてしまいます。
・階乗を含めた計算式の時(例:5!+7!-3や2!*3-4!等)2回目の階乗した数が計算式に含まれず
結果が出る

逆にこの構文がないと
・ある数字を階乗し、そのほかの数字を押すと階乗された結果の一番最後に数字が追加される
例 5! → 120と結果が出た後に1を押すと電卓上には1201と表示される
・階乗を含めた計算式の時(例:5!+7!-3や2!*3-4!等)2回目以降の階乗した数が計算式に含まれ
正しい結果が出る 例: 5!+7!-3=5157

この構文の回避方法はどのようにすればよいでしょうか?
あまり説明がうまくできないのでわかりにくいかと思いますが
どうぞよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決いたしました。
ご迷惑をおかけしました。

投稿2015/08/07 02:57

Strauss

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問