Você está na página 1de 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 chaves múltiplas As Integer As
2, 4, 6, 8 ou 10 chaves
de números de
chaves múltiplas
As Integer
As
Integer ‘gerar 6 numeros

Apostas i- ciclo

1 a 49.
1 a 49.

Podemos também jogar com

números .
números
.

Atenção:

, isto é, pode ser gerada uma chave com de

7 a 12
7 a 12

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

não podem ser repetidos e as chaves devem vir ordenadas. 1º parte – Variáveis: vetor 6

1º parte –

Variáveis: vetor 6 numeros i – j ciclo

1º parte – Variáveis: vetor 6 numeros i – j ciclo Public Class totoloto7 Dim Dim

Public Class totoloto7

Dim

Dim

vapostas numeros(5)
vapostas
numeros(5)

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
vapostas

For j = 0 To 5

(j) = Math .Floor((Rnd() * 49 + 1)) 'prencher o vector das apostas Math.Floor((Rnd() * 49 + 1)) 'prencher o vector das apostas

txtnumeros.Text &= numeros(j) & " Next txtnumeros.Text &= vbNewLine

seguintes noutras linhas.

Next

End Sub

" ‘ mostrar os números gerados

‘ mostrar os números gerados para apostas

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 –

2º parte –

Tinha-mos vector de um valor de tamanho fixo e era defenido por

integer.
integer.

dim números(5) as

Passamos a ter um vector de

tamanho variável

. Assim passamos a ter um

tamanho

máximo Inicializar o vector e depois fazer um pessoa escolheu redim quando soubermos quantos números
máximo
Inicializar o vector e depois fazer um
pessoa escolheu
redim
quando soubermos quantos números é que a
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)
x = (nudmultiplas.Value) - 1 Randomize() ReDim numeros(x) For i = 1 To vapostas For j

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

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

‘ Propriedades que as NUD deverão

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)

UBound(vnumeros) vnumeros(j) = Math .Floor(Rnd() * 49 + 1) Next If saiu_numero(vnumeros, vnumeros(j), j) Then j

Next

If saiu_numero(vnumeros, vnumeros(j), j) Then

j =

j

End If

-

1

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

Next

j =

End If

j

-

1

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