publicclass totoloto

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 números de 1 a 49. Podemos também jogar com chaves múltiplas, isto é, pode ser gerada uma chave com de 7 a 12 números. Atenção: Os números não podem ser repetidos e as chaves devem vir ordenadas. 1º parte – Variáveis: 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 ‘igual ao valor da nud Randomize() 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 números gerados Next txtnumeros.Text &= vbNewLine ‘ mostrar os números gerados para apostas 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

Upload: rui-bexiga

Post on 18-Apr-2015

454 views

Category:

Documents


9 download

DESCRIPTION

Public Class em Visual Basic para um exercício de Totoloto

TRANSCRIPT

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

Podem ser geradas 2, 4, 6, 8 ou 10 chaves de números de 1 a 49. Podemos também jogar com chaves múltiplas, isto é, pode ser gerada uma chave com de 7 a 12 números.

Atenção: Os números não podem ser repetidos e as chaves devem vir ordenadas.

1º parte –

Variáveis: 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 ‘igual ao valor da nud Randomize() 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 números gerados Next txtnumeros.Text &= vbNewLine ‘ mostrar os números gerados para apostas 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 números(5) as integer.

Passamos a ter um vector de tamanho variável. Assim passamos a ter um tamanho máximo

Inicializar o vector e depois fazer um redim quando soubermos quantos números é 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 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

‘ Propriedades que as NUD deverão

‘ Botão limpar coloca os objectos como no início

End Sub End Class

3º parte – validar as chaves para evitar números repetidos - ordenação

Exemplo em Programação, sem recorrer à Biblioteca Array.sort

Verificação da existência de um número 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 posição até à posição -1 ' devolve verdadeiro se num existe e falso caso não

For i As Integer = 0 To p - 1

If vnum = a(i) Then saiu_numero = True End If Next

End Function

Exemplo em Programação, 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 posição até à posição -1 ' devolve verdadeiro se número existe no vector e falso caso não exista For j As Integer = 0 To p - 1 If vnum = a(j) Then saiu_numero = True End If Next End Function End Class