2016-04-03 3 views
0

Я занимаюсь школьным проектом в Visual Basic (с использованием visual studio 2015), и я немного застрял.VB - сравнение чисел в двух ярлыках

Моя цель - создать лотерею, в которой игрок выбирает 6 номеров из флажков, затем он генерирует шесть случайных чисел (1 - 49) и, наконец, эти два набора должны быть сопоставлены, и в результате требуется количество правильно угаданных номеров ,

У меня есть оба результата (угаданные числа, сгенерированные числа), сохраненные в двух разных ярлыках.

Сами Флажки genereted так:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 



    lev = 20 
    tt = 0 
    For j = 1 To 50 
     tt = tt + 1 
     n = n + 1 
     box(j) = New CheckBox 
     box(j).Name = "box(" & Str(j) & ")" 
     If n = 11 Then lev = lev + 110 : n = 1 : tt = 1 
     box(j).Left = lev 
     box(j).Parent = Me 
     box(j).Top = tt * 20 
     box(j).Tag = j 
     box(j).Text = j 
     box(j).Visible = True 
    Next 
    box(50).Enabled = False 
End Sub 

Первая метка (угадываются номера) заполняется следующим образом (я не разместить весь код)

For j = 1 To 50 
      If box(j).Checked = True Then Label9.Text = Label9.Text + " " + box(j).Text 
Next 

и второй (сгенерированные числа):

Do 
     rn = rg.Next(1, 50) 
     If Not r.Contains(rn) Then 
      r.Add(rn) 
     End If 
    Loop Until r.Count = 6 

    Label1.Text = r(0).ToString + " " + r(1).ToString + " " + r(2).ToString + " " + r(3).ToString + " " + r(4).ToString + " " + r(5).ToString 

любая идея, как сравнивать числа, хранящиеся в этих ярлыках и получить результат (количество правильно угаданных номеров).

заранее спасибо

+0

Когда вы помещаете * цифры * в таблицы, они становятся текстом, который является чем-то совсем другим. Помещение каждой группы в метку * one * делает одну длинную строку текста и трудно сравнивать. Используйте переменные, такие как массив или список (т. Е. Не склеивайте их вместе, если вы знаете, что их нужно отдельно сравнивать) – Plutonix

+0

Спасибо, я попробую. Итак, если я храню значения в массиве, как мне сравнить их, чтобы получить количество правильно угаданных номеров? – DDT

+0

Как бы вы сравнили настоящий лотерейный билет с набором выигрышных номеров? По одному - петля. – Plutonix

ответ

0

Сравните цифры в ярлыках, разделив свойства Text лейблов в массивы строк и их преобразования в целое число массивов. Сначала, хотя есть крошечная проблема с вашим кодом, который добавляет угаданные числа на ярлык.

For j = 1 To 50 
      If box(j).Checked = True Then Label9.Text = Label9.Text + " " + box(j).Text 
Next 

«Кавказский узел» должен быть перемещен в конец строки, потому что на данный момент, метка всегда будет начинаться с пробела и столовых с функцией ниже. Таким образом, вы должны иметь -

For j = 1 To 50 
      If box(j).Checked = True Then Label9.Text = Label9.Text + box(j).Text + " " 
Next 

Ok. Функция ниже разбивает две текстовые метки на свой собственный массив и проходит через догадки и проверяет, содержится ли какое-либо число в сгенерированных числах. Затем он возвращает количество совпадений.

Private Function ComparePicks() As Integer 
    Dim numbersMatched As Integer 
    Dim picks(5) As Integer 
    Dim generatedNumbers(5) As Integer 
    For i As Integer = 0 To 5 
     picks(i) = CInt(Split(Label9.Text, " "c)(i)) 
    Next 
    For i As Integer = 0 To 5 
     generatedNumbers(i) = CInt(Split(Label1.Text, " "c)(i)) 
    Next 
    For i As Integer = 0 To 5 
     If generatedNumbers.Contains(picks(i)) Then 
      numbersMatched += 1 
     End If 
    Next 
    Return numbersMatched 
End Function 
Смежные вопросы