• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

lammu

[VB6] Ordenar Numeros Totoloto

9 mensagens neste tópico

hummmm.... não sabes como ordenar os numeros... dou-te um conselho, usa 3 vectores... e umas estructuras for... um dos vectores tem os numeros tal como foram introduzidos, outro é o final ja ordenado e o terceiro é um vector auxiliar...

Agora o resto tenta descubrir tu :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como é somente 7 números, podes pegar um a um e distribui-los para cada variável, ou seja, atribuis a cada variável um número que sair. De seguida utilizas as instruções if's para veres a ordenação correcta dos números.

Ps: Reparei na imagem que pusseste aí, nos números que foram gerados estão pelo menos dois que se repetem e isso não pode acontecer de maneira alguma.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes fazer o seguinte, supondo que tens os números num array/vector:

- percorres o vector a partir do 1º elemento para ver qual é o número mais pequeno;

- trocas o número mais pequeno com o 1º elemento do vector;

- percorres o vector a partir do 2º elemento para ver qual é o número mais pequeno excepto o 1º;

- trocas o número mais pequeno com o 2º elemento  do vector;

- percorres o vector a partir do 3º elemento para ver qual é o número mais pequeno excepto o 1º e o 2º;

- trocas o número mais pequeno com o 3º elemento do vector;

- etc.

Existe uma maneira mais eficiente utilizando listas, mas uma vez que não sei se é possível em VB, não a vou explicar aqui...

hummmm.... não sabes como ordenar os numeros... dou-te um conselho, usa 3 vectores... e umas estructuras for... um dos vectores tem os numeros tal como foram introduzidos, outro é o final ja ordenado e o terceiro é um vector auxiliar...

Wow, isso é um desperdício de recursos e tanto...

[offtopic]

Ps: Reparei na imagem que pusseste aí, nos números que foram gerados estão pelo menos dois que se repetem e isso não pode acontecer de maneira alguma.

Ora essa... se até saem zeros! :D

[/offtopic]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deixo aqui um código que ordena a chave... no caso uma chave para euromilhoes

cumps  :D

Option Explicit
Option Base 1
Dim estrelas(2) As Integer
Dim numeros(5) As Integer

Function estrela() As Integer
    Randomize
    estrela = Int((9 - 1 + 1) * Rnd + 1)
End Function

Function numero() As Integer
    Randomize
    numero = Int((50 - 1 + 1) * Rnd + 1)
End Function


Private Sub Command1_Click()
   Dim I As Integer, troca, x, y
        
    estrelas(1) = estrela
    estrelas(2) = estrela
    While estrelas(2) = estrelas(1)
       estrelas(2) = estrela
    Wend
    For I = 1 To 5
        numeros(I) = 0
    Next
    '
    numeros(1) = numero
    numeros(2) = numero
    While numerorepetido(numeros(2), 2)
        numeros(2) = numero
    Wend
    numeros(3) = numero
    While numerorepetido(numeros(3), 3)
        numeros(3) = numero
    Wend
    numeros(4) = numero
    While numerorepetido(numeros(4), 4)
        numeros(4) = numero
    Wend
    numeros(5) = numero
    While numerorepetido(numeros(5), 5)
        numeros(5) = numero
    Wend
    
    'ordenar números
    For x = 1 To 4
        For y = x To 5
            If numeros(x) > numeros(y) Then
            troca = numeros(y)
            numeros(y) = numeros(x)
            numeros(x) = troca
            End If
        Next y
    Next x
    
    'ordenar estrelas
    troca = 0
    If estrelas(1) > estrelas(2) Then
    troca = estrelas(1)
    estrelas(1) = estrelas(2)
    estrelas(2) = troca
    End If
    
    'imprimir
    Me.num(0) = numeros(1)
    Me.num(1) = numeros(2)
    Me.num(2) = numeros(3)
    Me.num(3) = numeros(4)
    Me.num(4) = numeros(5)
    
    Me.estrela1 = estrelas(1)
    Me.estrela2 = estrelas(2)
End Sub


Function numerorepetido(n As Integer, inx As Integer) As Boolean
    Dim rep As Boolean
    Dim I As Integer
    rep = False
    
    For I = 1 To inx - 1
        If n = numeros(I) Then
           rep = True
           Exit For
        End If
    Next
    numerorepetido = rep
End Function

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Antes de tentares ordenar tens de evitar repetições. Quanto a colocar os números por ordem, põe-nos numa array e depois usa o método Sort da class Array, que ordena automaticamente, como já sugeriu o Asgorath.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

As repetições não fazem parte do algoritmo de ordenação, têm que ser eliminadas aquando da geração dos números.

(...) numa array (...)

Array é masculino.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora