View Full Version : Ajuda em Visual Basic


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