Programación General > Visual Basic 6.0 e inferiores

 Combinar Arrays

<< < (2/2)

Guval:
Hola, Gracias por responder, voy a intentar explicarme mejor.
Tengo dos matrices, 1 con 5 elementos, y otra que es redimensionable,
cuyos elementos para efectos del programa variaran entre 2 y 24.
La idea es combinar las dos matrices, para dar salida a series de números
de seis elementos, que se van a almacenar en una tabla de access.

Ejemplo:
Matriz1, Contiene los siguientes numeros, 1,2,3,4 y5
Matriz1(0) = 1
Matriz1(1) = 2
Matriz1(2) = 3
Matriz1(3) = 4
Matriz1(4) = 5

(Los numeros correlativos son a manera de ejemplo, para mejor comprension, pero los elementos de la matriz pueden ser cualquier numero.)

Matriz2()( Es redimensionable, supongamos que tiene 4 elementos, 6,7,8,9)
Matriz2(0) = 6
Matriz2(1) = 7
Matriz2(2) = 8
Matriz2(3) = 9

Al ejecutar el programa se almacenan en la base de datos las siguientes series de seis elementos:
1 2 3 4 5 6 ' el ultimo numero de la serie es el primer elemento de Matriz2
1 2 3 4 5 7
1 2 3 4 5 8
1 2 3 4 5 9
1 2 3 4 6 7 'Aqui se comienzan a reemplazar dos elementos
1 2 3 4 6 8
1 2 3 4 6 9
1 2 3 4 7 8
1 2 3 4 7 9
1 2 3 5 6 7 ' Aqui se reemplazan tres elementos de la primera matriz
1 2 3 5 6 8
1 2 3 5 6 9
1 2 3 6 7 8
1 2 3 6 7 9
1 2 6 7 8 9 ' Aqui se reemplazan cuatro elementos de la primera matriz

La idea es que los elementos de la segunda matriz, primero completan las primeras series, pero luego van reemplazando a los elemntos de la segunda matriz para dar origen a todas las combinaciones posibles. De esta forma, en el caso que la segunda matriz tenga 24 elementos, la ultima serie posible seria:

24 25 26 27 28 29

Espero que me puedan ayudar.
Guval

Brroz:
Hola Guval.

Lo que necesitas es algo así:

Por ejemplo en un formulario con un textbox (Text1) con Multiline = True y un commandbutton (command1).

--- Código: Text --- Option ExplicitOption Base 0 Private iEstatica(5) As IntegerPrivate iDinamica() As Integer Private Sub Form_Load()    LoadEstatica    LoadDinamicaEnd Sub Private Sub LoadEstatica()    Dim iIdx As Integer    For iIdx = 0 To 4        iEstatica(iIdx) = iIdx + 1    Next iIdxEnd Sub Private Sub LoadDinamica()    ReDim iDinamica(22)    Dim iIdx As Integer    For iIdx = 0 To 21        iDinamica(iIdx) = iIdx + 6    Next iIdxEnd Sub Private Sub Command1_Click()    Text1.Text = &#34;&#34;    Dim sEstatica As String, sDinamica As String    Dim iBound As Integer, iCount As Integer    Dim iIdx As Integer, iFrom As Integer, iIdx2 As Integer    iBound = UBound(iDinamica) - 1    iCount = 4    Do Until iCount = 0        sEstatica = &#34;&#34;        For iIdx = 0 To iCount            sEstatica = sEstatica & iEstatica(iIdx) & &#34; &#34;        Next iIdx        For iIdx = 0 To 3 - iCount            sEstatica = sEstatica & iDinamica(iIdx) & &#34; &#34;        Next iIdx        iFrom = 4 - iCount        For iIdx = iFrom To iBound            sDinamica = &#34;&#34;            iIdx2 = iIdx            Do                sDinamica = sDinamica & iDinamica(iIdx2) & &#34; &#34;                iIdx2 = iIdx2 + 1            Loop Until iIdx2 &#62; 4 - iCount            Text1.Text = Text1.Text & sEstatica & sDinamica & vbCrLf            iFrom = iFrom + 1        Next iIdx        iCount = iCount - 1    LoopEnd Sub  
No te acostumbres a pedir y que te lo den todo hecho.

Tu problema me huele a ejercicio estudiantil... para la próxima intenta aportar algo de tu parte o por lo menos cuentanos lo que habías intentado y probado.

Adiós.

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa