• ベストアンサー

変数A~Iに1~9までの数をそれぞれ入れるには?

for loop文の中で繰り返してる最中に A~Iまでダブらないように 1~9までの数字をいれて loopまでいけば次にforからくだっていくときは また別の組み合わせでくだっていき 最終的にloopの回数を9!通りにしたいんですが どうやってコーディングするのがスマートですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#2>vb2005だと動かないので改良しないといけないですね。 'vb2005コンソールプログラムとしてコンパイル&実行出来るように書き直してみましたが、 '正直改良というほどの修正じゃないですけど・・ Imports System Class Sample Shared Sub Main() Dim A%, B%, C%, D%, E%, F%, G%, H%, I% Dim I1%, I2%, I3%, I4%, I5%, I6%, I7%, I8%, I9% Dim List(9) As String Dim choice As String Dim NUMLIST As String NUMLIST = "123456789" For I1 = 1 To 9 List(1) = NUMLIST choice = Mid(List(1), I1, 1) A = Val(choice) List(1) = Replace(List(1), choice, "") For I2 = 1 To 8 List(2) = List(1) choice = Mid(List(2), I2, 1) B = Val(choice) List(2) = Replace(List(2), choice, "") For I3 = 1 To 7 List(3) = List(2) choice = Mid(List(3), I3, 1) C = Val(choice) List(3) = Replace(List(3), choice, "") For I4 = 1 To 6 List(4) = List(3) choice = Mid(List(4), I4, 1) D = Val(choice) List(4) = Replace(List(4), choice, "") For I5 = 1 To 5 List(5) = List(4) choice = Mid(List(5), I5, 1) E = Val(choice) List(5) = Replace(List(5), choice, "") For I6 = 1 To 4 List(6) = List(5) choice = Mid(List(6), I6, 1) F = Val(choice) List(6) = Replace(List(6), choice, "") For I7 = 1 To 3 List(7) = List(6) choice = Mid(List(7), I7, 1) G = Val(choice) List(7) = Replace(List(7), choice, "") For I8 = 1 To 2 List(8) = List(7) choice = Mid(List(8), I8, 1) H = Val(choice) List(8) = Replace(List(8), choice, "") For I9 = 1 To 1 List(9) = List(8) choice = Mid(List(9), I9, 1) I = Val(choice) Console.WriteLine("{0}{1}{2}{3}{4}{5}{6}{7}{8}", A, B, C, D, E, F, G, H, I) Next Next Next Next Next Next Next Next Next End Sub End Class

mixiho
質問者

お礼

めっちゃうれしい。本当感激♪ ありがとうございます。 Dim A%, B%, C%, D%, E%, F%, G%, H%, I% から Next までを Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click ↑ ↓ End Sub この間にかいて Imports Systemを一番上に書いて ためしてみたのですが▲を押しても 画面が白くってフリーズするだけでイミディエイト・ウィンドウに文字がでないんですよね・・・・。 なぜでしょうね・・・・。 そんなむずかしい処理をしてるわけでもないと思うんですけどね。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>なぜでしょうね・・・・。 えーっとですね。 #3のプログラムを丸ごとメモ帳でも何でもコピペして適当な名前 例えばlist9.vb とか言う名前で適当な場所に保存してください。 Visual Studio コマンドプロンプト か(パスが通っていれば)単なるコマンドプロンプトを立ち上げて、 保存した場所に、 cd /d 保存したフォルダ で移動するか、コマンドプロンプトが立ち上がっているカレントフォルダに先程のファイルをコピー(移動)して下さい。 vbc list9.vb でコンパイルして list9 で実行してみて下さい。

mixiho
質問者

お礼

できました!!! 本当ありがとうございます!!! 助かりましたーーー。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

'スマートかどうかはわからんけど、作ってみました。 'for ループより再帰を使うとスマートになるかも・・ Public Sub sample() Dim A%, B%, C%, D%, E%, F%, G%, H%, I% Dim I1%, I2%, I3%, I4%, I5%, I6%, I7%, I8%, I9% Dim List(9) As String Dim choice As String Dim NUMLIST As String NUMLIST = "123456789" For I1 = 1 To 9 List(1) = NUMLIST choice = Mid(List(1), I1, 1) A = Val(choice) List(1) = Replace(List(1), choice, "") For I2 = 1 To 8 List(2) = List(1) choice = Mid(List(2), I2, 1) B = Val(choice) List(2) = Replace(List(2), choice, "") For I3 = 1 To 7 List(3) = List(2) choice = Mid(List(3), I3, 1) C = Val(choice) List(3) = Replace(List(3), choice, "") For I4 = 1 To 6 List(4) = List(3) choice = Mid(List(4), I4, 1) D = Val(choice) List(4) = Replace(List(4), choice, "") For I5 = 1 To 5 List(5) = List(4) choice = Mid(List(5), I5, 1) E = Val(choice) List(5) = Replace(List(5), choice, "") For I6 = 1 To 4 List(6) = List(5) choice = Mid(List(6), I6, 1) F = Val(choice) List(6) = Replace(List(6), choice, "") For I7 = 1 To 3 List(7) = List(6) choice = Mid(List(7), I7, 1) G = Val(choice) List(7) = Replace(List(7), choice, "") For I8 = 1 To 2 List(8) = List(7) choice = Mid(List(8), I8, 1) H = Val(choice) List(8) = Replace(List(8), choice, "") For I9 = 1 To 1 List(9) = List(8) choice = Mid(List(9), I9, 1) I = Val(choice) Debug.Print A, B, C, D, E, F, G, H, I Next Next Next Next Next Next Next Next Next End Sub

mixiho
質問者

お礼

ありがとうございます。^^ でもvb2005だと動かないので改良しないといけないですね。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

この質問に類似していますね。 http://personal.okwave.jp/kotaeru.php3?q=2113807 こちらの回答で、わかりますか?

mixiho
質問者

お礼

わかりません。。。。

関連するQ&A