Combinaciones numericas por posicion con numeros guias

Iniciado por luis456, 28 Junio 2014, 18:06 PM

0 Miembros y 1 Visitante están viendo este tema.

luis456

Gracias elektro por tu paciencia

Puse un post donde explico un poco mejor el asunto me imagino que lo habrás leído :)

No se explicar bien el problema tratare de hacerlo mejor.

Primero en los códigos que me has mostrado pasa una cosa y es que cada ves que lo ejecuto cambian las combinaciones y deberían ser las mismas combinaciones siempre y cuando no se cambien los numeros introducidos por el usuario los numeros guías son para tomar las posiciones
de las combinaciones los numeros no son asociados ni no son para ver que posición toman en orden, ya que si pongo el de 10 de primero este toma la posición del 1 y si pongo el 20 de primero este hace lo mismo toma la posicion del 1  :)

Números  01-02-03-04-05-06-07-08-09-10-11-12-13-14
               
               01-02-03-04-05-06
               01-02-03-             07-08-09
               01-04-09-                             10-11-12
               01-          05-  07                   10         13-14
               01-            06-   08-                  11-12-13

                  02-03-04-        07-             10-          13

                  02-03-   05-                 09-    11-          14
                  02-    04-        08-                 11-       3-14
                  02-      05-06-                   10-11-12
                  03-         06-     09-                     12-13-14
                  03-            07-08-   1         10-11-12

                  03-            07-08-   10-11-12
                        04-05-06-07-08-09

Combinaciones de la rueda aquí esta la forma en como se combinan los numeros

01)...01-02-03-04-05-06.
02)...01-02-03-07-08-09. .
03)...01-04-09-10-11-12
04)...01-05-07-10-13-14. .
05)...01-06-08-11-12-13. .
06)...02-03-04-07-10-13
07)...02-03-05-09-11-14. .
08)...02-04-08-11-13-14. .
09)...02-05-06-10-11-12
10)...03-06-09-12-13-14. .
11)...03-07-08-10-11-12. .
12)...04-05-06-07-08-09


Números guías:   01-02-03-04-05-06-07-08-09-10-11-12-13-14

numeros usuario: 10 13 18 25 26 28 30 32 35 37 40 42 45 47<--este seria el imput

y esta la salida

10 13 18 25 26 28
10 13 18 30 32 35
10 25 35 37 40 42
10 26 30 37 45 47
10 28 32 40 42 45
13 18 25 30 37 45
13 18 26 35 40 47
13 25 32 40 45 47
13 26 28 37 42 45
18 28 35 42 45 47
18 30 32 37 42 45
25 26 28 30 32 35


Gracias por tu infinita paciencia

Luis
Que tu sabiduria no sea motivo de Humillacion para los demas

luis456

Bueno unos días después de estar fuera vuelvo al ataque jejej con el tema de las combinaciones e echo a pie este código, pero ya me perdí de tanto escribir pero es la idea de lo de las combinaciones mas  o menos lo que me gustaria es poder simplificarlo.

Código (vbnet) [Seleccionar]
Public Class Form1


    Dim maximum As Short = 99
    Dim Número As Double
    Private TextBoxes As TextBox() = {Nothing}


    Private r1 = 5
    Private r2 = 15
    Private r3 = 25
    Private r4 = 35
    Private r5 = 40
    Private r6 = 45

    Private ar1 = 6
    Private br2 = 10
    Private cr3 = 20
    Private dr4 = 30
    Private er5 = 40
    Private sr6 = 4



    Private _textBox As Object
    Private Property ListBox1Count As Integer
    ReadOnly MAX As Integer = 8
    Dim Result22 As Integer
    Dim Counter, Counter2 As Integer
    Dim myLabelArray(6) As Label
    Private Sub Limpiar_Cajas(ByVal f As Form)
        ' recorrer todos los controles del formulario indicado 
        For Each c As Control In f.Controls
            If TypeOf c Is TextBox Then
                c.Text = "" ' eliminar el texto 
            End If
        Next
    End Sub

    Private Sub Button4_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button4.Click
        ' pasar el formulario 
        Call Limpiar_Cajas(Me)


    End Sub

   

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
        'funcion para introducir manualmente r1 = Val(TextBox1.Text)
    End Sub



    'funcion unir o formar combinaciones
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ListBox1.Items.Add(TextBox1.Text)
        ListBox1.Items.Add(TextBox6.Text)
        ListBox1.Items.Add(TextBox7.Text)
        ListBox1.Items.Add(TextBox8.Text)
        ListBox1.Items.Add(TextBox10.Text)
        ListBox1.Items.Add(TextBox12.Text)
        'funcion unir o formar combinaciones segundo lisb
        ListBox2.Items.Add(TextBox1.Text)
        ListBox2.Items.Add(TextBox2.Text)
        ListBox2.Items.Add(TextBox4.Text)
        ListBox2.Items.Add(TextBox31.Text)
        ListBox2.Items.Add(TextBox33.Text)
        ListBox2.Items.Add(TextBox36.Text)
        'funcion unir o formar combinaciones terce lisb
        ListBox3.Items.Add(TextBox1.Text)
        ListBox3.Items.Add(TextBox2.Text)
        ListBox3.Items.Add(TextBox4.Text)
        ListBox3.Items.Add(TextBox6.Text)
        ListBox3.Items.Add(TextBox7.Text)
        ListBox3.Items.Add(TextBox8.Text)
        'funcion unir o formar combinaciones cuarto lisb
        ListBox4.Items.Add(TextBox1.Text)
        ListBox4.Items.Add(TextBox2.Text)
        ListBox4.Items.Add(TextBox4.Text)
        ListBox4.Items.Add(TextBox13.Text)
        ListBox4.Items.Add(TextBox14.Text)
        ListBox4.Items.Add(TextBox15.Text)
        'funcion unir o formar combinaciones quinto lisb
        ListBox5.Items.Add(TextBox1.Text)
        ListBox5.Items.Add(TextBox5.Text)
        ListBox5.Items.Add(TextBox14.Text)
        ListBox5.Items.Add(TextBox15.Text)
        ListBox5.Items.Add(TextBox34.Text)
        ListBox5.Items.Add(TextBox35.Text)
        'funcion unir o formar combinaciones sesta lisb
        ListBox6.Items.Add(TextBox2.Text)
        ListBox6.Items.Add(TextBox5.Text)
        ListBox6.Items.Add(TextBox13.Text)
        ListBox6.Items.Add(TextBox14.Text)
        ListBox6.Items.Add(TextBox15.Text)
        ListBox6.Items.Add(TextBox33.Text)
        'funcion unir o formar combinaciones 7o lisb
        ListBox7.Items.Add(TextBox6.Text)
        ListBox7.Items.Add(TextBox5.Text)
        ListBox7.Items.Add(TextBox2.Text)
        ListBox7.Items.Add(TextBox10.Text)
        ListBox7.Items.Add(TextBox11.Text)
        ListBox7.Items.Add(TextBox18.Text)
        'funcion unir o formar combinaciones 8o lisb
        ListBox8.Items.Add(TextBox1.Text)
        ListBox8.Items.Add(TextBox3.Text)
        ListBox8.Items.Add(TextBox5.Text)
        ListBox8.Items.Add(TextBox19.Text)
        ListBox8.Items.Add(TextBox27.Text)
        ListBox8.Items.Add(TextBox29.Text)
        'funcion unir o formar combinaciones 9o lisb
        ListBox9.Items.Add(TextBox22.Text)
        ListBox9.Items.Add(TextBox25.Text)
        ListBox9.Items.Add(TextBox27.Text)
        ListBox9.Items.Add(TextBox30.Text)
        ListBox9.Items.Add(TextBox31.Text)
        ListBox9.Items.Add(TextBox32.Text)
        'funcion unir o formar combinaciones 10o lisb
        ListBox10.Items.Add(TextBox24.Text)
        ListBox10.Items.Add(TextBox26.Text)
        ListBox10.Items.Add(TextBox28.Text)
        ListBox10.Items.Add(TextBox33.Text)
        ListBox10.Items.Add(TextBox34.Text)
        ListBox10.Items.Add(TextBox35.Text)
        'funcion unir o formar combinaciones 11o lisb
        ListBox11.Items.Add(TextBox2.Text)
        ListBox11.Items.Add(TextBox4.Text)
        ListBox11.Items.Add(TextBox23.Text)
        ListBox11.Items.Add(TextBox31.Text)
        ListBox11.Items.Add(TextBox32.Text)
        ListBox11.Items.Add(TextBox34.Text)
        'funcion unir o formar combinaciones 12o lisb
        ListBox12.Items.Add(TextBox1.Text)
        ListBox12.Items.Add(TextBox2.Text)
        ListBox12.Items.Add(TextBox4.Text)
        ListBox12.Items.Add(TextBox32.Text)
        ListBox12.Items.Add(TextBox33.Text)
        ListBox12.Items.Add(TextBox35.Text)
        'funcion unir o formar combinaciones 13o lisb
        ListBox13.Items.Add(TextBox6.Text)
        ListBox13.Items.Add(TextBox13.Text)
        ListBox13.Items.Add(TextBox31.Text)
        ListBox13.Items.Add(TextBox33.Text)
        ListBox13.Items.Add(TextBox35.Text)
        ListBox13.Items.Add(TextBox36.Text)

        'funcion unir o formar combinaciones 14o lisb
        ListBox14.Items.Add(TextBox13.Text)
        ListBox14.Items.Add(TextBox14.Text)
        ListBox14.Items.Add(TextBox30.Text)
        ListBox14.Items.Add(TextBox31.Text)
        ListBox14.Items.Add(TextBox33.Text)
        ListBox14.Items.Add(TextBox35.Text)
        'funcion unir o formar combinaciones 15o lisb
        ListBox15.Items.Add(TextBox6.Text)
        ListBox15.Items.Add(TextBox7.Text)
        ListBox15.Items.Add(TextBox8.Text)
        ListBox15.Items.Add(TextBox12.Text)
        ListBox15.Items.Add(TextBox14.Text)
        ListBox15.Items.Add(TextBox15.Text)
        ListBox15.Items.Add(TextBox30.Text)
        'funcion unir o formar combinaciones 16o lisb
        'funcion unir o formar combinaciones 17o lisb
        'funcion unir o formar combinaciones 18o lisb
        'funcion unir o formar combinaciones 19o lisb
        'funcion unir o formar combinaciones 20o lisb



    End Sub



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub

    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
        TextBox1.Text = r1 + 1
        TextBox2.Text = r1 + 2
        TextBox3.Text = r1 + 3
        TextBox4.Text = r1 - 1
        TextBox5.Text = r1 - 2
        TextBox6.Text = r1 - 3

        TextBox7.Text = r2 + 1
        TextBox8.Text = r2 + 2
        TextBox9.Text = r2 + 3
        TextBox10.Text = r2 - 1
        TextBox11.Text = r2 - 2
        TextBox12.Text = r2 - 3

        TextBox13.Text = r3 + 1
        TextBox14.Text = r3 + 2
        TextBox15.Text = r3 + 3
        TextBox16.Text = r3 - 1
        TextBox17.Text = r3 - 2
        TextBox18.Text = r3 - 3


        TextBox19.Text = r4 + 1
        TextBox20.Text = r4 + 2
        TextBox21.Text = r4 + 3
        TextBox22.Text = r4 - 1
        TextBox23.Text = r4 - 2
        TextBox24.Text = r4 - 3

        TextBox25.Text = r5 + 1
        TextBox26.Text = r5 + 2
        TextBox27.Text = r5 + 3
        TextBox28.Text = r5 - 1
        TextBox29.Text = r5 - 2
        TextBox30.Text = r5 - 3


        TextBox31.Text = r6 + 1
        TextBox32.Text = r6 + 2
        TextBox33.Text = r6 + 3
        TextBox34.Text = r6 - 1
        TextBox35.Text = r6 - 2
        TextBox36.Text = r6 - 3


    End Sub

    Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
        TextBox1.Text = ar1 + 1
        TextBox2.Text = ar1 + 2
        TextBox3.Text = ar1 + 3
        TextBox4.Text = ar1 - 1
        TextBox5.Text = ar1 - 2
        TextBox6.Text = ar1 - 3

        TextBox7.Text = br2 + 1
        TextBox8.Text = br2 + 2
        TextBox9.Text = br2 + 3
        TextBox10.Text = br2 - 1
        TextBox11.Text = br2 - 2
        TextBox12.Text = br2 - 3

        TextBox13.Text = cr3 + 1
        TextBox14.Text = cr3 + 2
        TextBox15.Text = cr3 + 3
        TextBox16.Text = cr3 - 1
        TextBox17.Text = cr3 - 2
        TextBox18.Text = cr3 - 3


        TextBox19.Text = dr4 + 1
        TextBox20.Text = dr4 + 2
        TextBox21.Text = dr4 + 3
        TextBox22.Text = dr4 - 1
        TextBox23.Text = dr4 - 2
        TextBox24.Text = dr4 - 3

        TextBox25.Text = er5 + 1
        TextBox26.Text = er5 + 2
        TextBox27.Text = er5 + 3
        TextBox28.Text = er5 - 1
        TextBox29.Text = er5 - 2
        TextBox30.Text = er5 - 3


        TextBox31.Text = sr6 + 1
        TextBox32.Text = sr6 + 2
        TextBox33.Text = sr6 + 3
        TextBox34.Text = sr6 - 1
        TextBox35.Text = sr6 - 2
        TextBox36.Text = sr6 - 3
    End Sub

    Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged

    End Sub

    Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged

    End Sub

    Private Sub CheckBox5_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox5.CheckedChanged

    End Sub

    Private Sub CheckBox6_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox6.CheckedChanged

    End Sub





    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim Num As Double
        Randomize()
        Num = Rnd()
        MsgBox(Num)
    End Sub

   
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
       
        ListBox1.Items.Clear()
        ListBox2.Items.Clear()
        ListBox3.Items.Clear()
        ListBox4.Items.Clear()
        ListBox5.Items.Clear()
        ListBox6.Items.Clear()
        ListBox7.Items.Clear()
        ListBox8.Items.Clear()
        ListBox9.Items.Clear()
        ListBox10.Items.Clear()
        ListBox11.Items.Clear()
        ListBox12.Items.Clear()
        ListBox13.Items.Clear()
        ListBox14.Items.Clear()
        ListBox15.Items.Clear()
        ListBox16.Items.Clear()
        ListBox17.Items.Clear()
        ListBox18.Items.Clear()
        ListBox19.Items.Clear()
        ListBox20.Items.Clear()
       
    End Sub
End Class



Que tu sabiduria no sea motivo de Humillacion para los demas

Eleкtro

#22
Hola

Antes de nada quiero avisarte de que todos los códigos los he escrito al vuelo (en el Notepad) si algo da error de sintaxis, disculpa.






Citar
Código (vbnet) [Seleccionar]
       For Each c As Control In f.Controls
          If TypeOf c Is TextBox Then
              c.Text = "" ' eliminar el texto  
          End If
      Next

Esa parte se puede simplificar un poquito (solo un poquito):

Utiliza el método 'OfType' para especificar el tipo de control.
Y utiliza el método "Clear" del TextBox.

Código (vbnet) [Seleccionar]
for each tb as textbox in Me.f.Controls.OfType(Of TextBox)
tb.Clear()
next tb







Citar
Código (vbnet) [Seleccionar]
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Esa parte es demasiado grande pero no percibo el patron que sigues al añadir los textbox como para poder ayudarte a simplificar el código.

Lo único, que podrías utilizar el método "AddRange" para añadir varios objetos a la colección, en una sola instrucción:

Código (vbnet) [Seleccionar]
ListBox1.Items.addrange({TextBox1.Text,TextBox6.Text,TextBox7.Text,TextBox8.Text,TextBox10.Text,TextBox12.Text})






Citar
Código (vbnet) [Seleccionar]
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged
Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged
Private Sub CheckBox5_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox5.CheckedChanged
Private Sub CheckBox6_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox6.CheckedChanged

Aquí el patrón que usaste es perceptible.

( Podrías hacerlo de varias maneras, pero no te voy a confundir con más código que este )

primero de nada te suscribes al mismo evento de todos los checkboxes a un único event-handler:

Código (vbnet) [Seleccionar]
Private Sub CheckBoxes_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles CheckBox1.CheckedChanged, checkbox2.CheckedChanged, checkbox3.CheckedChanged 'etc...


y luego puedes simplificar el bloque entero en algo así:

Código (vbnet) [Seleccionar]
dim values as integer()

' asigno los valores apropiados al array, según el checkbox que haya lanzado el evento CheckedChanged
' el primer valor negativo '-0' se omitirá, es para compensar el índice basado en "1" de los textbox y del for
select case sender.name

case "CheckBox1"
values = {-0,r1,r2,r3,r4,r5,r6}

case "CheckBox2"
values = {-0,ar1 ,br2 ,cr3 ,dr4 ,er5 ,sr6 }

case "CheckBox3"
' ...

case else
' ...

end case

for x as integer = 1 to 36 step 6 'textbox1 to textbox36

me.controls("textbox" & cstr(x)).text   = cstr(values(x) +1i) 'tb1
me.controls("textbox" & cstr(x+1)).text = cstr(values(x) +2i) 'tb2
me.controls("textbox" & cstr(x+2)).text = cstr(values(x) +3i) 'tb3
me.controls("textbox" & cstr(x+3)).text = cstr(values(x) -1i) 'tb4
me.controls("textbox" & cstr(x+4)).text = cstr(values(x) -2i) 'tb5
me.controls("textbox" & cstr(x+5)).text = cstr(values(x) -3i) 'tb6

next x







Citar
Código (vbnet) [Seleccionar]
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

Aquí ya te pasaste '¬¬

Podrías haber aplicado el mismo principio que aplicaste al usar:

Citar
Código (vbnet) [Seleccionar]
For Each c As Control In f.Controls
          If TypeOf c Is ...

Pero ni eso hiciste '¬¬ (supongo que ya estarías agobiado xD)

Creo que esto ya sabrás como resolverlo, te mostré un ejemplo de lo mismo al principio :P








luis456

Bueno ya me enrede de nuevo  :-( de verdad que lo de estas combinaciones me esta poniendo tarambana jejejje

Ahora trasteando he conseguido esto que según lo que veo me podría servir mucho ya que puedo jugar con las posiciones ahora creo que esto es para texto y no se si me sirve numerico y como evitaria los repetidos

   deshaceCombina(0)=mid(cadena,1,1)
   deshaceCombina(1)=mid(cadena,2,1)
   deshaceCombina(2)=mid(cadena,3,1)
   deshaceCombina(3)=mid(cadena,4,1)
Que tu sabiduria no sea motivo de Humillacion para los demas

Jero67

Hola Luis.

Llevo tiempo sin entrar por aquí, así que no había visto este post.

Creo que sé lo que quieres, solo creo, y la solución es bastante sencilla, si es realmente lo que quieres.

A ver si te he entendido:

Tienes un grupo de combinaciones con números guía (01,02,03,04,05,06) y quieres cambiarlo por tus números (17,20,25,31,38,41,43,47,49), el caso es tan sencillo como meter cada grupo de combinaciones en un List o Array y tus números en otro List o Array. Después de esto crear un tercer List o Array con los números cambiados, por ejemplo:

LIST de combinaciones con los números guía
01,02,03,04,05,06
01,02,03,04,05,07
01,02,03,04,05,08
01,02,03,04,05,09

List con nuestros números
17
20
25
31
38
41
43
47
49


En el tercer List tendremos que sustituir cada uno de los números guía por los nuestros propios:

List con nuestros números:

17,20,25,31,38,41
17,20,25,31,38,43
17,20,25,31,38,47
17,20,25,31,38,49

Lo que no sé es si la combinación de números guía la quieres generar tu o bien la quieres coger desde un fichero .txt, de esta segunda forma lo tendrías mas fácil y es simplemente cargando el fichero .txt con las combinaciones en el List o Array de números guía.

Espero que sea esto lo que quieres conseguir.

Un saludo

XresH

fa, lo lei todo, creo que antes de comenzar a meter codigo hay que entender al 100 % lo que quiere, es decir de eso se trata programar, de llevar un problema a las manos del ordenador, pero sino captamos el problema es dificil desarrollar una posible solucion, asi no se entreveran, sinceramente todavia tengo dudas de lo que necesita el colega de luis, todos manejamos distintos terminos en varios sentidos, no se si todavia lo necesitara o ya consiguio lo que queria debido a que el post tiene bastante tiempo.

Solo lo hago para saber si hay necesidad de contestar o solamente dejarlo pasar..

Saludos.
[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<

luis456

Cita de: Jero67 en 27 Septiembre 2014, 22:03 PM
Hola Luis.

Llevo tiempo sin entrar por aquí, así que no había visto este post.

Creo que sé lo que quieres, solo creo, y la solución es bastante sencilla, si es realmente lo que quieres.

A ver si te he entendido:

Tienes un grupo de combinaciones con números guía (01,02,03,04,05,06) y quieres cambiarlo por tus números (17,20,25,31,38,41,43,47,49), el caso es tan sencillo como meter cada grupo de combinaciones en un List o Array y tus números en otro List o Array. Después de esto crear un tercer List o Array con los números cambiados, por ejemplo:

LIST de combinaciones con los números guía
01,02,03,04,05,06
01,02,03,04,05,07
01,02,03,04,05,08
01,02,03,04,05,09

List con nuestros números
17
20
25
31
38
41
43
47
49


En el tercer List tendremos que sustituir cada uno de los números guía por los nuestros propios:

List con nuestros números:

17,20,25,31,38,41
17,20,25,31,38,43
17,20,25,31,38,47
17,20,25,31,38,49

Lo que no sé es si la combinación de números guía la quieres generar tu o bien la quieres coger desde un fichero .txt, de esta segunda forma lo tendrías mas fácil y es simplemente cargando el fichero .txt con las combinaciones en el List o Array de números guía.

Espero que sea esto lo que quieres conseguir.

Un saludo


Si veo que cojiste la idea :) y los números se pueden cargar desde un txt o de una variable que ya contiene los números a combinar


saludos
Luis

Que tu sabiduria no sea motivo de Humillacion para los demas