willie22
31-05-2007, 20:22
O que se passa é o seguinte...O meu prof de TP(Técnicas de Programação) mandou-me fazer um trabalho que consiste na realização de um programa que simule um gerador de apostas do Totoloto e do Euromilhões...E eu tenho tido algumas dificuldades(já postei alguns tópicos para tirar as dúvidas) porque parte da matéria exigida para este trabalho ele não a deu.E está a fazer o trabalho a alguns colegas meus durante as aulas.Colégio "semi-privado" é assim :lol: ...Já fiz a interface do programa ( http://img512.imageshack.us/img512/3117/printscreenaw9.jpg ) e o código respectivo para uma aposta, mas está-me a dar este erro ao corrê-lo ( http://img264.imageshack.us/img264/9532/printscreen2cf2.jpg ).Se conseguir pôr o código a funcionar para uma aposta depois é provável que o consiga pôr também a funcionar para as apostas múltiplas...O código que fiz é o seguinte :
Private Sub btn_gerar_Click(Index As Integer)
Dim vec_en1(4), vec_ee1(1) As Integer
Dim ja_saiu As Boolean
If (opt_euromilhoes = True And opt_euromilhoes_uma_aposta = True) Then
Cls 'Limpa o Form
i = 0
Do While i < 4
ja_saiu = False
n = Int(49 * Rnd) + 1
For j = 0 To 4
If n = vec_en1(j) And ja_saiu = False Then ja_saiu = True
Next
If ja_saiu = False Then
vec_en1(i) = n
i = i + 1
End If
Loop
i = 0
Do While i < 2
ja_saiu = False
n = Int(9 * Rnd) + 1
For j = 0 To 1
If n = vec_ee1(j) And ja_saiu = False Then ja_saiu = True
Next
If ja_saiu = False Then
vec_ee1(i) = n
i = i + 1
End If
Loop
txt_euromilhoes_numeros1.Text = vec1(0) & " " & vec1(1) & " " & vec1(2) & " " & vec1(3) & " " & vec1(4)
txt_euromilhoes_estrelas1.Text = vec2(0) & " " & vec2(1)
End Sub
Agradeço desde já toda a ajuda que me possam dar :)
msdevweb
01-06-2007, 14:43
humm... parece-me que estas a chamar um função, a qual necessita de argumentos e não lhos deste.. algo como function gerar(o_que as string)
se chamares a função apenas como gerar() e não como gerar("o_que") ele vai dar-te esse erro, tenta fazer um debug com alguns breakpoints para perceberes em que linha esta o erro. e depois se não conseguires resolver, mostra a linha em que deu erro.
abraço.
alfinete
01-06-2007, 15:43
é em vb 6, ou 2005
se for em 2005 tenho um feito e podia-te arranjar
alfinete
01-06-2007, 16:05
Ai tens o meu programa
código fonte
Public Class Form1
Dim totoarray(5) As Label
Dim euro_numero_array(4) As Label
Dim euro_estrela_array(1) As Label
Dim euro(4) As Integer 'array para os numeros do euromilhões
Dim estrela(1) As Integer ' 'array para os numeros das estrelas
Dim toto(5) As Integer 'array para os numeros do totoloto
Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
' indexar os arrays das labels do totoloto
totoarray(0) = Me.Lbl_toto_1
totoarray(1) = Me.Lbl_toto_2
totoarray(2) = Me.Lbl_toto_3
totoarray(3) = Me.Lbl_toto_4
totoarray(4) = Me.Lbl_toto_5
totoarray(5) = Me.Lbl_toto_6
' indexar os arrays das labels do numeros do euromilhões
euro_numero_array(0) = Me.Lbl_euro_1
euro_numero_array(1) = Me.Lbl_euro_2
euro_numero_array(2) = Me.Lbl_euro_3
euro_numero_array(3) = Me.Lbl_euro_4
euro_numero_array(4) = Me.Lbl_euro_5
'indexar os arrays das labels do numeros das estrelas do euro_estrela_array(0) = Me.lbl_estrela_1
euro_estrela_array(0) = Me.lbl_estrela_1
euro_estrela_array(1) = Me.lbl_estrela_2
For i As Integer = 0 To 5
totoarray(i).Visible = False
Next
For i As Integer = 0 To 4
euro_numero_array(i).Visible = False
Next
Me.lbl_estrela_1.Visible = False
Me.lbl_estrela_2.Visible = False
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Btn_sair_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_sair.Click
Close()
End Sub
' prenche qualquer array com qualquer dimensão
'l ---- numeros
' função generica
Sub escolher(ByRef a() As Integer, ByVal l As Integer)
' ubound - dá a ultima possição de um array
'cint - converte para inteiro
Randomize()
For i As Integer = 0 To UBound(a)
a(i) = CInt(1 + Rnd() * l)
' a - array
' a(i) numero escolhido
'i- possição
If existe_numero(a, a(i), i) Then
' temos de decrementar uma posição para voltar a anterior
' pois aquela em que nos encontramos é a do numero repetido
i -= 1
End If
Next
End Sub
Private Sub btn_gera_totoloto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_gera_totoloto.Click
For i As Integer = 0 To 5
totoarray(i).Visible = True
Next
escolher(toto, 49)
For i As Integer = 0 To 5
totoarray(i).Text = toto(i)
Next
End Sub
Private Sub btn_gera_euro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_gera_euro.Click
For i As Integer = 0 To 4
euro_numero_array(i).Visible = True
Next
Me.lbl_estrela_1.Visible = True
Me.lbl_estrela_2.Visible = True
escolher(euro, 50)
escolher(estrela, 9)
For i As Integer = 0 To 4
euro_numero_array(i).Text = euro(i)
Next
For i As Integer = 0 To 1
euro_estrela_array(i).Text = estrela(i)
Next
End Sub
' p - possição no array para um numero n
'num - numero a ser escolhido
' função generica
Function existe_numero(ByVal a() As Integer, ByVal num As Integer, ByVal pos As Integer) As Boolean
existe_numero = False
' percorre da primeira possição ate a possição -1
' decolve verdadeiro se num existe e falso caso não
For i As Integer = 0 To pos - 1
If num = a(i) Then
existe_numero = True
End If
Next
End Function
'ordena por ordem crescente (função generica )
Sub ordenar(ByRef a() As Integer)
Dim menor, aux As Integer
For i As Integer = 0 To UBound(a) - 1
menor = a(i)
For j As Integer = i + 1 To UBound(a)
If menor > a(j) Then
aux = menor
menor = a(j)
a(j) = aux
End If
Next
a(i) = menor
Next
End Sub
Private Sub Btn_ordenar_toto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_ordenar_toto.Click
ordenar(toto)
For i As Integer = 0 To 5
totoarray(i).Text = toto(i)
Next
End Sub
Private Sub Btnordenar_Euro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnordenar_Euro.Click
ordenar(estrela)
ordenar(euro)
For i As Integer = 0 To 4
euro_numero_array(i).Text = euro(i)
Next
For i As Integer = 0 To 1
euro_estrela_array(i).Text = estrela(i)
Next
End Sub
End Class_____________________________________________ _________________________________
Nome dos Objectos do formulário
nome dos objectos
zona_totoloto
botão gerar - btn_gera_totoloto
botão ordenar -Btn_ordenar_toto
label 1 -Lbl_toto_1
label 2 -Lbl_toto_2
label 3 -Lbl_toto_3
label 4 -Lbl_toto_4
label 5 -Lbl_toto_5
label 6 -Lbl_toto_6
_______________________________________________
zona euromilhões
botão gerar -btn_gera_euro
botão ordenar -Btnordenar_Euro
chave euromilhões
label 1 -Lbl_euro_1
label 2 -Lbl_euro_2
label 3 -Lbl_euro_3
label 4 -Lbl_euro_4
label 5 -Lbl_euro_5
estrelas
label 1 -lbl_estrela_1
label 2 -lbl_estrela_2_____________________________________ _______________________
Imagem do formulário do programa
Clica na imagem para a veres maior
http://img166.imageshack.us/img166/6764/desenhovbbl5.th.jpg (http://img166.imageshack.us/my.php?image=desenhovbbl5.jpg)
atenção este codigo esta feito em vb2005
mas as diferenças não são muitas ou quase nehumas
no no botão sair onde está close(), penso que é unload me em vb6
nota: este programa gera totoloto e euromilhões, no totoloto so gera os 6 algarismos, não gera o suplementar ,foi um esquecimento.
mas com isso tdo feito é facil so alterar para isso
espero que ajude
miguel1002
15-07-2007, 11:03
Boas pessoal!:-D
Foi-me pedido fazer um programa para o euromilhões mas nao estou a conseguir. Ja tenho a interface feita e algum código mas quando ponho 'gerar chave' encontro alguns numeros repetidos. Gostaria que me ajudassem a por os 5 números sem estarem repetidos. Estou a fazer em vb 2005. Alguma ajuda gostaria que me mandassem para o mail (no_ar_10@hotmail.com).
Obrigado pela ajuda. No que puder ajudar também...:)
Miguel