• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Luzifer

[VB.NET] Chave Euromilhões

6 mensagens neste tópico

Olá a todos.

Estou a fazer uma aplicação (VS 2005), para gerar uma chave  para o euromilhões com o seguinte código. Acontece que assim, pôr vezes da-me dois números iguais.

Qual a maneira de fazer, para não dar números duplicados.

____________________________________________________________________________________________________

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Randomize()

        Dim value0 As Integer
        Dim value1 As Integer
        Dim value2 As Integer
        Dim value3 As Integer
        Dim value4 As Integer
        Dim value5 As Integer
        Dim value6 As Integer
        Dim value7 As Integer

        value0 = (50 * Rnd() + 1)
        value1 = (50 * Rnd() + 1)
        value2 = (50 * Rnd() + 1)
        value3 = (50 * Rnd() + 1)
        value4 = (50 * Rnd() + 1)
        value5 = (50 * Rnd() + 1)
        value6 = (9 * Rnd() + 1)
        value7 = (9 * Rnd() + 1)

        TextBox1.Text = value0
        TextBox2.Text = value1
        TextBox3.Text = value2
        TextBox4.Text = value3
        TextBox5.Text = value4
        TextBox6.Text = value5
        TextBox7.Text = value6
        TextBox8.Text = value7

        TextBox7.BackColor = Color.Gold
        TextBox8.BackColor = Color.Gold
    End Sub

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

------------------------------------------------------------------------------------------------------------------------------------------------------------------

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim value1 As Integer

        Dim value2 As Integer

        Dim value3 As Integer

        Dim value4 As Integer

        Dim value5 As Integer

        Do

            Randomize()

            value1 = (49 * Rnd() + 1)

            value2 = (49 * Rnd() + 1)

            value3 = (49 * Rnd() + 1)

            value4 = (49 * Rnd() + 1)

            value5 = (49 * Rnd() + 1)

            TextBox1.Text = value1

            TextBox2.Text = value2

            TextBox3.Text = value3

            TextBox4.Text = value4

            TextBox5.Text = value5

        Loop Until value1 <> value2 And value1 <> value3 And value1 <> value4 And value1 <> value5 And value2 <> value3 And value2 <> value4 And value2 <> value5 And value3 <> value4 And value3 <> value5 And value4 <> value5

        Dim value6 As Integer

        Dim value7 As Integer

        Do

            Randomize()

            value6 = (8 * Rnd() + 1)

            value7 = (8 * Rnd() + 1)

            TextBox6.Text = value6

            TextBox7.Text = value7

        Loop Until value6 <> value7

    End Sub

--------------------------------------------------------------------------------------------------------------------------------------------------------------

Obrigado pela ajuda nram

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas a todos.

Estou a fazer um programa (VB Express 2010), para extrair uma chave para o euromilhões com o seguinte código. Acontece que quando faço a ordenação das estrelas se a estrela tiver o número 10 ou 11 não faz a sua ordenação correcta.

Alguém me pode ajudar, sff.

Interface:

interfacend.png

Public Class Form1
    Dim chave(6) As Integer
    Sub mostra_numeros()
        lblBola1.Text = chave(0)
        lblBola2.Text = chave(1)
        lblBola3.Text = chave(2)
        lblBola4.Text = chave(3)
        lblBola5.Text = chave(4)
        lblEstrela1.Text = chave(5)
        lblEstrela2.Text = chave(6)
    End Sub

    Private Sub btnOrdenar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOrdenar.Click
        Dim primeiro, segundo As Integer

        Array.Sort(chave, 0, 5)
        mostra_numeros()
        btnOrdenar.Visible = False

        If lblEstrela1.Text > lblEstrela2.Text Then
            primeiro = lblEstrela2.Text
            segundo = lblEstrela1.Text
            lblEstrela1.Text = lblEstrela2.Text
            lblEstrela2.Text = segundo
        End If
    End Sub

    Private Sub btnSair_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSair.Click
        Application.Exit()
    End Sub

    Private Sub btnExtracao_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExtracao.Click
        Dim x, bola, num_bola, y, estrela, num_estrela As Byte
        Dim repetida As Boolean
        Randomize()
        num_bola = 0
        num_estrela = 5

        Do While num_bola <= 4
            bola = Int(Rnd() * 49 + 1)
            For x = 0 To num_bola
                If chave(x) = bola Then
                    repetida = True
                    Exit For
                Else
                    repetida = False
                End If
            Next
            If repetida = False Then
                chave(num_bola) = bola
                num_bola += 1
            End If
        Loop

        Do While num_estrela <= 6
            estrela = Int(Rnd() * 11 + 1)
            For y = 5 To num_estrela
                If chave(y) = estrela Then
                    repetida = True
                    Exit For
                Else
                    repetida = False
                End If
            Next
            If repetida = False Then
                chave(num_estrela) = estrela
                num_estrela += 1
            End If
        Loop
        btnOrdenar.Visible = True
        mostra_numeros()
    End Sub
End Class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Já descubri o meu erro...a condição If...Then está errada.

Errada:

        If lblEstrela1.Text > lblEstrela2.Text Then
            primeiro = lblEstrela2.Text
            segundo = lblEstrela1.Text
            lblEstrela1.Text = lblEstrela2.Text
            lblEstrela2.Text = segundo
        End If

Correta:

        numero1 = lblEstrela1.Text
        numero2 = lblEstrela2.Text

        If numero2 > numero1 Then
            lblEstrela1.Text = numero1
            lblEstrela2.Text = numero2
        Else
            lblEstrela1.Text = numero2
            lblEstrela2.Text = numero1
        End If

Todo o programa a funcionar ás mil maravilhas:

Public Class Form1
    Dim chave(6) As Integer
    Sub mostra_numeros()
        lblBola1.Text = chave(0)
        lblBola2.Text = chave(1)
        lblBola3.Text = chave(2)
        lblBola4.Text = chave(3)
        lblBola5.Text = chave(4)
        lblEstrela1.Text = chave(5)
        lblEstrela2.Text = chave(6)
    End Sub

    Private Sub btnOrdenar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOrdenar.Click
        Dim numero1, numero2 As Integer

        Array.Sort(chave, 0, 5)
        mostra_numeros()
        btnOrdenar.Visible = False

        numero1 = lblEstrela1.Text
        numero2 = lblEstrela2.Text

        If numero2 > numero1 Then
            lblEstrela1.Text = numero1
            lblEstrela2.Text = numero2
        Else
            lblEstrela1.Text = numero2
            lblEstrela2.Text = numero1
        End If
    End Sub

    Private Sub btnSair_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSair.Click
        Application.Exit()
    End Sub

    Private Sub btnExtracao_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExtracao.Click
        Dim x, bola, num_bola, y, estrela, num_estrela As Byte
        Dim repetida As Boolean
        Randomize()
        num_bola = 0
        num_estrela = 5

        Do While num_bola <= 4
            bola = Int(Rnd() * 49 + 1)
            For x = 0 To num_bola
                If chave(x) = bola Then
                    repetida = True
                    Exit For
                Else
                    repetida = False
                End If
            Next
            If repetida = False Then
                chave(num_bola) = bola
                num_bola += 1
            End If
        Loop

        Do While num_estrela <= 6
            estrela = Int(Rnd() * 11 + 1)
            For y = 5 To num_estrela
                If chave(y) = estrela Then
                    repetida = True
                    Exit For
                Else
                    repetida = False
                End If
            Next
            If repetida = False Then
                chave(num_estrela) = estrela
                num_estrela += 1
            End If
        Loop
        btnOrdenar.Visible = True
        mostra_numeros()
    End Sub
End Class

Cumprimentos,

e obrigado na mesma...  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora