You are on page 1of 5

Pretende-se um programa em Visual Basic para gerar chaves para o totoloto.

Podem ser geradas 2, 4, 6, 8 ou 10 chaves de nmeros de 1 a 49. Podemos tambm jogar com chaves mltiplas, isto , pode ser gerada uma chave com de 7 a 12 nmeros. Ateno: Os nmeros no podem ser repetidos e as chaves devem vir ordenadas. 1 parte Variveis: vetor 6 numeros i j ciclo Apostas i- ciclo

Public Class totoloto7 Dim vapostas As Integer Dim numeros(5) As Integer

gerar 6 numeros

Private Sub btngerar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btngerar.Click Dim i, j As Integer vapostas = nudapostas.Value Randomize()

igual ao valor da nud

For i = 1 To vapostas For j = 0 To 5 numeros(j) = Math.Floor((Rnd() * 49 + 1)) 'prencher o vector das apostas txtnumeros.Text &= numeros(j) & " " mostrar os nmeros gerados Next mostrar os nmeros gerados para apostas txtnumeros.Text &= vbNewLine

seguintes noutras linhas.


Next End Sub

Private Sub btnlimpar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnlimpar.Click txtnumeros.Text = "" nudapostas.Value = 2 End Sub End Class

2 parte Tinha-mos vector de um valor de tamanho fixo e era defenido por dim nmeros(5) as integer. Passamos a ter um vector de tamanho varivel. Assim passamos a ter um tamanho mximo Inicializar o vector e depois fazer um redim quando soubermos quantos nmeros que a pessoa escolheu
Public Class totoloto Dim x As Integer = 11 Dim vapostas As Integer Dim numeros(x) As Integer Private Sub btngerar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btngerar.Click Dim i, j As Integer vapostas = nudapostas.Value If chkmultiplas.Checked Then vapostas = 1 nudapostas.Enabled = False End If x = (nudmultiplas.Value) - 1 Randomize() ReDim numeros(x) For i = 1 To vapostas For j = 0 To UBound(numeros) numeros(j) = Math.Floor((Rnd() * 49 + 1)) 'prencher o vector das apostas txtnumeros.Text &= numeros(j) & " " Next txtnumeros.Text &= vbNewLine Next End Sub Private Sub btnlimpar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnlimpar.Click txtnumeros.Text = "" nudapostas.Value = 2 nudapostas.Enabled = True nudmultiplas.Value = 6 chkmultiplas.Checked = False End Sub Private Sub chkmultiplas_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkmultiplas.CheckedChanged If chkmultiplas.Checked Then Boto limpar coloca os objectos como no nudmultiplas.Enabled = True incio nudmultiplas.Value = 7 nudapostas.Enabled = False nudapostas.Value = 1 Else nudmultiplas.Enabled = False nudmultiplas.Value = 6 nudapostas.Enabled = True nudapostas.Value = 2 End If

Propriedades que as NUD devero

End Sub End Class

3 parte validar as chaves para evitar nmeros repetidos - ordenao

Exemplo em Programao, sem recorrer Biblioteca Array.sort

Verificao da existncia de um nmero no vector Function saiu_numero(ByVal a() As Integer, ByVal vnum As Integer, ByVal p As Integer) As Boolean saiu_numero = False ' percorre da primeira posio at posio -1 ' devolve verdadeiro se num existe e falso caso no For i As Integer = 0 To p - 1 If vnum = a(i) Then saiu_numero = True End If Next End Function Exemplo em Programao, sem recorrer Biblioteca Array.sort For i = 0 To x - 1 vmenor = numeros(i) For k = i + 1 To x If vmenor > numeros(k) Then vaux = vmenor numeros(k) = vaux End If Next numeros(i) = vmenor Next

Isto substitui-se por array.sort(vnumeros)


Randomize() For i = 1 To vapostas For j = 0 To UBound(vnumeros) vnumeros(j) = Math.Floor(Rnd() * 49 + 1) If saiu_numero(vnumeros, vnumeros(j), j) Then j = j - 1 End If Next Array.Sort(vnumeros) For j = 0 To (vx - 1) txtchaves.Text &= vnumeros(j) & " "

Next txtchaves.Text = txtchaves.Text & vnumeros(vx) & vbNewLine Next

Public Class totoloto Dim vx As Integer = 11 Dim vapostas As Integer Dim vnumeros(vx) As Integer Private Sub btngerar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btngerar.Click Dim i, j As Integer ' um ciclo para as chaves e outro para frar os numeros para completar as chaves vapostas = nudapostas.Value Randomize() If cbmultiplas.Checked = True Then vapostas = 1 nudapostas.Enabled = False End If vx = nudmultiplas.Value - 1 ReDim vnumeros(vx) Randomize() For i = 1 To vapostas For j = 0 To UBound(vnumeros) vnumeros(j) = Math.Floor(Rnd() * 49 + 1) If saiu_numero(vnumeros, vnumeros(j), j) Then j = j - 1 End If Next Array.Sort(vnumeros)

For j = 0 To (vx - 1) txtchaves.Text &= vnumeros(j) & " " Next txtchaves.Text = vnumeros(vx) & vbNewLine Next End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtchaves.TextChanged End Sub Private Sub btnlimpar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnlimpar.Click txtchaves.Text = "" nudapostas.Value = 2 nudapostas.Enabled = True nudmultiplas.Value = 6 cbmultiplas.Checked = False End Sub Private Sub nudmultiplas_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nudmultiplas.ValueChanged

End Sub Private Sub cbmultiplas_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbmultiplas.CheckedChanged If cbmultiplas.Checked Then nudmultiplas.Enabled = True nudmultiplas.Value = 7 nudapostas.Enabled = False nudapostas.Value = 1 Else nudmultiplas.Enabled = False nudmultiplas.Value = 6 nudapostas.Enabled = True nudapostas.Value = 2 End If End Sub Function saiu_numero(ByVal a() As Integer, ByVal vnum As Integer, ByVal p As Integer) As Boolean saiu_numero = False ' percorre da primeira posio at posio -1 ' devolve verdadeiro se nmero existe no vector e falso caso no exista For j As Integer = 0 To p - 1 If vnum = a(j) Then saiu_numero = True End If

Next

End Function End Class

You might also like