2016-04-30 6 views
-1

これはボタン2のクリックで1つの数字だけを生成するコードです。私はそれが配列にボタン1クリックから10個の数字を取ると、少なくともから最大に並べ替えられ、同じ10個の数字を生成する必要があります。乱数とバブルソートで配列を初期化する

Public Class Form1 
    Dim numberArray(9) As Integer 
    Dim generator As New Random 


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim min As Integer 
     Dim r As Integer 
     Dim max As Integer 
     min = Val(TextBox1.Text) 
     max = Val(TextBox2.Text) 
     Label1.Text = "" 
     For r = 0 To numberArray.GetUpperBound(0) 
      numberArray(r) = generator.Next(min, max) 
      Label1.Text += numberArray(r) & " " 
      Label1.Text += ControlChars.NewLine 
     Next 

    End Sub 

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 


     Dim r As Integer 
     Dim intTemp As Integer 
     Dim blnExhchangeMade As Boolean 
     blnExhchangeMade = False 
     Do While blnExhchangeMade 


      For r = LBound(numberArray) To (UBound(numberArray) - 1) 
       If numberArray(r) < numberArray(r + 1) Then 
        intTemp = numberArray(r) 
        numberArray(r) = numberArray(r + 1) 
        numberArray(r + 1) = intTemp 
        blnExhchangeMade = True 

       End If 

      Next 
     Loop 
     Label2.Text += numberArray(r) & " " 
     Label2.Text += ControlChars.NewLine 
    End Sub 
End Class 
+0

ていますあなたがエラーを取得している、または配列はちょうどソートされていませんか? – Kateract

+0

https://en.wikipedia.org/wiki/Bubble_sort擬似コードを翻訳する – Plutonix

+0

これはあなた自身では書いていません。ある場所では 'GetUpperBound'を使い、別の場所では' UBound'を使ったからです。あなたは実際にアルゴリズムを理解し、自分でコードを書くようにしてください。私はあなたがこれをあなた自身で解決できることが分かると思います。 Plutonixがリンクしている疑似コードは良いスタートです。 – Enigmativity

答えて

0

ここで私が行っているだろうコードだ:

Private Const elements As Integer = 9 
Private numberArray(elements - 1) As Integer 
Private generator As New Random 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim min As Integer = Integer.Parse(TextBox1.Text) 
    Dim max As Integer = Integer.Parse(TextBox2.Text) 
    Label1.Text = "" 
    For r = 0 To elements - 1 
     numberArray(r) = generator.Next(min, max + 1) 
     Label1.Text += numberArray(r) & " " 
     Label1.Text += System.Environment.NewLine 
    Next 
End Sub 

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    Dim intTemp As Integer 
    Dim blnExhchangeMade As Boolean = True 
    Do While blnExhchangeMade 
     blnExhchangeMade = False 
     For r = 0 To elements - 2 
      If numberArray(r) > numberArray(r + 1) Then 
       intTemp = numberArray(r) 
       numberArray(r) = numberArray(r + 1) 
       numberArray(r + 1) = intTemp 
       blnExhchangeMade = True 
      End If 
     Next 
    Loop 
    Label1.Text = "" 
    For r = 0 To elements - 1 
     Label1.Text += numberArray(r) & " " 
     Label1.Text += System.Environment.NewLine 
    Next 
End Sub 
+0

ご協力いただきありがとうございます。最初のボタンからminとmaxを使って何かが間違っていなければならないことは分かっていました。私は鉱山を修理し、後でそれを使って私自身のために別のWindowsプログラムを開発する予定です。私は昨夜、それを理解しようと毛を引っ張っていた。私は削除され、何度も始まった。私は要件としてCBを取らなければなりませんでしたが、この学期の後、私はC#とPythonに焦点を当てます。ループを理解するのに役立つと思われる参考書や参考資料はありますか? – CertIntrovert23

+0

@ CertIntrovert23 - ループは、命令プログラミング(VB.NET、C#、Pythonはすべてそのクラスに含まれています)のかなり基本的な部分です。私はあなたがループに問題があるとは思わない。私はあなたの能力を正しくデバッグするためにあなたの頭の中でプログラムを実行すると思います。それはちょうど練習になります。私は小さなテストプログラムを書いて、あなたの理解を少し押して、小さなステップで学ぶようにしたいと思っています。 – Enigmativity