SEQUENCIA MEGA SENA

MA.BREGUEIRO 23/11/2006 17:47:18
#185970
GERADOR DE JOGOS DA LOTERIAS CEF - MATRIZ
http://www.vbmania.com.br/vbmania/vbmdetail.php?varID=5508
====================================================================

Se vc olhar um volante da mega sena, vai perceber que tem linhas e colunas, diagonais, etc.

01-02-03-04-05-06-07-08-09-10 = LINHAS
11
21
31
41
51 = COLUNAS

eu gostaria de uma funcao para me dizer a sequencia dos numeros
EX.:

02 05 11 12 13 60 = onde 11 12 13 estao em sequencia da linha

11 21 31 35 40 58 = onde 11 21 31 estao em sequencia da coluna

e tambem a distancia entre eles.
EX.:
02 05 = 2 numeros entre eles = 03 04
05 11 = 5 numeros entre eles = 06 07 08 09 10

USUARIO.EXCLUIDOS 23/11/2006 18:21:46
#185980
A estrutura de dados seria uma matriz, onde I = Linha e J = Coluna.
Neste caso para cada numero do volante estaria em um IJ da matriz

M[i,j] = N no exemplo

M[1,1] = 01 M[1,2] = 02 M[1,3]=03 ....
M[2,1] = 11 ...
.
.
.

Assim pelo indice vc consegue saber o que precisa

Mesma linha = seria os com I iguais
Mesma coluna = seria os com J iguais

A diferença entre elas basta operar com os indices I e J


LIONHEART 24/11/2006 07:40:24
#186034
Resposta escolhida
Olha só, eu fiz pra vc a parte de COLUNAS VERTICAIS
Aproveita a idéia e faz a de horizontais, é só trocar os indices.
Eu to sem tempo agora pra fazer os dois pra vc.

Se quiser testar, basta trocar os valores de sNumeros, pode colocar quantos quiser, ele vai checar mesmo que vc ponha 100 numeros lá.

----------------------------------------------------------------------

    Dim i As Integer, j As Integer, iQtdeColuna As Integer
Dim sNumeros As String
Dim sVerticais(0 To 9) As String, sHorizontais(0 To 9) As String
Dim Colunas As Variant, Volante As Variant
Const sDelimitador As String = " "

'numeros a checar (separados por ESPAÇO)
sNumeros = "01 05 10 15 23 46"

'grava em array separando por espaço
Volante = Split(sNumeros, sDelimitador)

'verifica os que estão na mesma coluna e joga no indice da vertical
For j = 0 To 9
For i = LBound(Volante) To UBound(Volante)
If Right(Volante(i), 1) = j Then
sVerticais(j) = Trim(sVerticais(j) & " " & Volante(i))
End If
Next
Next

'exibe as colunas que possuem mais de 1 item
For i = LBound(sVerticais) To UBound(sVerticais)
If Not sVerticais(i) = "" Then
Colunas = Split(sVerticais(i), sDelimitador)
iQtdeColuna = (UBound(Colunas) - LBound(Colunas)) + 1

'esta coluna I tem mais de 1 item
If iQtdeColuna > 1 Then
MsgBox sVerticais(i)
End If
End If
Next

Tópico encerrado , respostas não são mais permitidas