ここから本文です

VisualBasicの問題なのですが解説お願いします。

アバター

ID非公開さん

2018/1/910:16:49

VisualBasicの問題なのですが解説お願いします。

問20です。お願いします。

Visual Basic,Z Then,Next A,1 To 9,for A,Next B,for B

閲覧数:
32
回答数:
3

違反報告

ベストアンサーに選ばれた回答

y_h********さん

2018/1/1002:03:41

For A = 0 To 9 は 0~9 まで1ずつ増えながら
Next A までの間を繰り返し処理します。
これで計10回繰り返す事がわかりますね。

繰り返す度にAも連動して値が0~9まで 1ずつ増えていきます。

For A ~ Next A までを10往復する事が分かった所で
次に
For A ~ Next A の間に

For B = 1 To 9 があります。
これはさっきの For A ~ Next A と 同じように動作し、

Bの場合は 1~9で1ずつ増えて行き計9回
For B ~ Next B までを報復します。

For A ~ Next A の間に For B ~ Next B が入っていますので、
この時点で事実上
Aが10回往復してくるので、
Bは1~9で9回の往復だけではなく
Aの往復によって Bは1~9の9回の往復を 10回行う事になり、
Bは回数だけで言えば90回往復する事になります。

ただし、Bの値が90になる事はなく、
あくまで1~9まで1ずつ増えていく動作を
10回行う事になります。

ここまで分かれば
For C
For D
もわかりますね。

そして
X = C * 100 + A * 10 + B
Y = B * 100 + A * 10 + C
Z = D * 1000 + A * 100 + B * 10 + A

XとYとZ に ABCDに代入されている値で計算された結果が格納されているわけです。

↓次にココで XYZに格納された値で X+Y が Z と同じだったら
If X + Y = Z Then


↓メッセージで ABCDの各値を表示しているのです。
MsgBox "(A, B, C) = (" & A & "," & B & "," & C & "." & D & ")"

End If


結果的には
各ループされる回数は
A = 10回
B = 90回
C = 810回
D = 7290回
計8200回もループするプログラムだとゆうことです。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

lin********さん

2018/1/914:15:51

For A = 0 To 9
For B = 1 To 9
For C = 1 To 9
For D = 1 To 9
X = C * 100 + A * 10 + B
Y = B * 100 + A * 10 + C
Z = D * 1000 + A * 100 + B * 10 + A
If X + Y = Z Then
MsgBox "(A, B, C) = (" & A & "," & B & "," & C & "." & D & ")"
End If
Next D
Next C
Next B
Next A

「A」は、「0~9」まで、1つずつ増えてゆきます。

その「A」が「0」の間に「B」は「1~9」まで増えてゆきます。

また、「B」が「1」の間に、「C」が、「C」が「1」の間に、「D」が「1~9」まで増えてゆきます。

すなわち、「D」の「1~9」までの繰り返しは、すごい回数、繰り返されることになります。

「X」「Y」「Z」の計算は分かると思います。

CAB

なので、「C」は「100の位」、「A」は「10の位」、「B」は「1の位」ですから、「C * 100 + A * 10 + B」としているわけです。

その「X」と「Y」と「Z」の計算結果を基(「もと」)にして、「X + Y」を計算し、その値が「Z」と一致したら、というのは「If X + Y = Z Then」です。

そして、一致したらそのときの「A, B, C, D」の値を表示しています。

最初に表示される値は、「0, 1, 9, 1」です(すなわち「A = 0, B = 1, C = 9, D = 1」のときに、「X + Y = Z」が成立するわけです)。

実際に計算してみましょう。

X = C * 100 + A * 10 + B

ですから、「9 * 100 + 0 * 10 + 1」で、「901」です。

次に、

Y = B * 100 + A * 10 + C

ですから、「1 * 100 + 0 * 10 + 9」で、「109」です。

「901 + 109 = 1010」ですから「X + Y = 1010」です。

Z = D * 1000 + A * 100 + B * 10 + A

ですから、「1 * 1000 + 0 * 100 + 1 * 10 + 0」で、「1010」になり、「X + Y = Z」が成立しています。

bla********さん

2018/1/911:47:19

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる