Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: luis456 en 9 Agosto 2014, 15:07



Título: Mis malas combinaciones :(
Publicado por: luis456 en 9 Agosto 2014, 15:07
Al ataque de nuevo jeje bueno ya ustedes saben como se frustra uno cuando no se logra hacer funcionar algo, vueltas y vueltas y nada tengo el siguiente programa que funciona bien hasta llegar a la función de combinar los numeros pero es un código de basic que quiero implementar pero no soy capaz ( como siempre)


Código
  1. Public Class Form1
  2.    Dim maximum As Short = 99
  3.    Dim x As Integer = 0
  4.    Dim Número As Double
  5.    Private TextBoxes As TextBox() = {Nothing}
  6.    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
  7.    Private _textBox As Object
  8.    Private Property ListBox1Count As Integer
  9.    ReadOnly MAX As Integer = 99
  10.  
  11.    Dim auxiliar As Integer
  12.    Dim auxiliar1 As Integer
  13.  
  14.    Dim auxiliar2 As String
  15.    Dim auxiliar3 As String
  16.    Dim anterior As String
  17.  
  18.    Dim recorrer As Integer
  19.    Dim recorrer1 As Integer
  20.    Dim recorrer2 As Integer
  21.    Dim recorrer3 As Integer
  22.  
  23.    Private Property Calcular As Object
  24.  
  25.    Private Property TextBox(ByVal TextBoxCount As Short) As Object
  26.        Get
  27.            Return _textBox
  28.        End Get
  29.        Set(ByVal value As Object)
  30.            _textBox = value
  31.        End Set
  32.    End Property
  33.  
  34.    Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
  35.        ' evitar letras
  36.        If Char.IsDigit(e.KeyChar) Then
  37.            e.Handled = False
  38.        ElseIf Char.IsControl(e.KeyChar) Then
  39.            e.Handled = False
  40.        ElseIf Char.IsSeparator(e.KeyChar) Then
  41.            e.Handled = False
  42.        Else
  43.            e.Handled = True
  44.        End If
  45.  
  46.    End Sub
  47.  
  48.  
  49.    ReadOnly Property Num1 As Int32
  50.        Get
  51.            Return CInt(TextBox1.Text)
  52.        End Get
  53.    End Property
  54.  
  55.    ReadOnly Property Num2 As Int32
  56.        Get
  57.            Return CInt(TextBox2.Text)
  58.        End Get
  59.    End Property
  60.    ReadOnly Property Num3 As Int32
  61.        Get
  62.            Return CInt(TextBox3.Text)
  63.        End Get
  64.    End Property
  65.  
  66.  
  67.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  68.  
  69.  
  70.        Result1 = {Num1 + 1, Num1 + 2, Num1 + 4, Num1 + 6, Num1 - 4, Num1 - 1} _
  71.                  .Distinct().ToArray ' Elimino duplicados
  72.  
  73.        Result2 = {Num2 + 1, Num2 + 2, Num2 + 3, Num2 - 1, Num2 - 2, Num1 - 3} _
  74.                  .Distinct().ToArray ' Elimino duplicados
  75.  
  76.        Result3 = {Num3 - 1, Num3 - 2, Num3 - 3, Num3 + 2, Num3 + 3, Num3 + 5} _
  77.                  .Distinct().ToArray ' Elimino duplicados
  78.  
  79.  
  80.        Dim Rand As New Random
  81.        ' Concateno, y...
  82.        ' Elimino duplicados, y...
  83.        ' Selecciono los números inferiores a MAX, y...
  84.        ' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX.
  85.        Dim Result As IEnumerable(Of Integer) =
  86.            (Result1.Concat(Result2).Concat(Result3)).
  87.            Distinct.
  88.            Select(Function(Value As Integer)
  89.                       Return If(Value < MAX, Value, Rand.Next(0, MAX))
  90.                   End Function)
  91.  
  92.  
  93.        ListBox1.Items.AddRange(Result.Cast(Of Object).ToArray)
  94.  
  95.        ' Result2---------------------------------------------------------
  96.        Dim Rand2 As New Random
  97.        ' Concateno, y...
  98.        ' Elimino duplicados, y...
  99.        ' Selecciono los números inferiores a MAX, y...
  100.        ' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX.
  101.        Dim Result22 As IEnumerable(Of Integer) =
  102.            (Result1).
  103.            Distinct.
  104.            Select(Function(Value As Integer)
  105.                       Return If(Value < MAX, Value, Rand.Next(0, MAX))
  106.                   End Function)
  107.  
  108.  
  109.  
  110.        ListBox2.Items.AddRange(Result22.Cast(Of Object).ToArray)
  111.  
  112.  
  113.  
  114.        Dim Rand22 As New Random
  115.        ' Concateno, y...
  116.        ' Elimino duplicados, y...
  117.        ' Selecciono los números inferiores a MAX, y...
  118.        ' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX.
  119.        Dim Result222 As IEnumerable(Of Integer) =
  120.            (Result2).
  121.            Distinct.
  122.            Select(Function(Value As Integer)
  123.                       Return If(Value < MAX, Value, Rand.Next(0, MAX))
  124.                   End Function)
  125.  
  126.        ListBox3.Items.AddRange(Result222.Cast(Of Object).ToArray)
  127.  
  128.  
  129.  
  130.  
  131.    End Sub
  132.    ' funcion combinar la variable " resul " que contiene la cantidad de numeros a combinar (no funciona)
  133.    ' esto es de basic pero es para cojer la idea :) no se como hacerlo en net
  134.  
  135.     For recorrer = 1 To Len(resul)
  136.            auxiliar = Mid(palabra, recorrer, 1)
  137.            For recorrer1 = 1 To Len(resul)
  138.                auxiliar1 = Mid(palabra, recorrer1, 1)
  139.                For recorrer2 = 1 To Len(resul)
  140.                    auxiliar2 = Mid(palabra, recorrer2, 1)
  141.                    For recorrer3 = 1 To Len(resul)
  142.                        auxiliar3 = Mid(resul, recorrer3, 1)
  143.                        If anterior <> auxiliar3 Then
  144.  
  145.                            Print(auxiliar & auxiliar1 & auxiliar2 & auxiliar3) <------------mostrar esto en un lixbox
  146.  
  147.                        End If
  148.                        anterior = auxiliar3
  149.                    Next
  150.                Next
  151.            Next
  152.        Next
  153.    End Sub
  154.  
  155.  
  156.  
  157.    '--------------------------- limpiar texboxes
  158.    Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  159.        For Each obj As Control In Me.Controls
  160.            If (TypeOf obj Is TextBox) Then
  161.                obj.Text = ""
  162.            End If
  163.            If (TypeOf obj Is GroupBox) Then
  164.                For Each caja As Control In obj.Controls
  165.                    If (TypeOf caja Is TextBox) Then
  166.                        caja.Text = ""
  167.                    End If
  168.                Next
  169.            End If
  170.  
  171.            ListBox1.Items.Clear()
  172.            ListBox2.Items.Clear()
  173.            ListBox3.Items.Clear()
  174.  
  175.  
  176.        Next
  177.    End Sub
  178.  
  179.  
  180. End Class
  181.  


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 9 Agosto 2014, 21:01
funciona bien hasta llegar a la función de combinar los numeros pero es un código de basic que quiero implementar pero no soy capaz ( como siempre)

¿Que es exactamente lo que "falla"?, y en caso de dar error, ¿cual es el error?.

saludos


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 9 Agosto 2014, 21:37
En la parte de las combinaciones me dice que se esperaba una declaración  ???

resul no esta declarado
palabra no declarado

de paso he visto un error que tenia y era que tenia que hacer un boton para introduce la funcion jejej

Código
  1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  2.        ' funcion combinar la variable " resul " que contiene la cantidad de numeros a combinar (no funciona)
  3.        ' esto es de basic pero es para cojer la idea :) no se como hacerlo en net
  4.  
  5.        For recorrer = 1 To Len(resul)
  6.            auxiliar = Mid(palabra, recorrer, 1)
  7.            For recorrer1 = 1 To Len(resul)
  8.                auxiliar1 = Mid(palabra, recorrer1, 1)
  9.                For recorrer2 = 1 To Len(resul)
  10.                    auxiliar2 = Mid(palabra, recorrer2, 1)
  11.                    For recorrer3 = 1 To Len(resul)
  12.                        auxiliar3 = Mid(resul, recorrer3, 1)
  13.                        If anterior <> auxiliar3 Then
  14.  
  15.                            Print(auxiliar & auxiliar1 & auxiliar2 & auxiliar3)
  16.                        End If
  17.                        anterior = auxiliar3
  18.                    Next
  19.                Next
  20.            Next
  21.        Next
  22.    End Sub


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 11 Agosto 2014, 19:29
En la parte de las combinaciones me dice que se esperaba una declaración  ???

resul no esta declarado
palabra no declarado

Luis, si te pido la información de un error no espero escuchar tu versión modificada del mensaje de error, sino el mensaje de error tal cual es, ¿sino como esperas que te ayudemos a depurarlo o encontremos información al respecto? (en este caso no hacia falta buscar nada, con tu explicación fue suficiente intuir el problema, pero la próxima vez quizás no sea tan intuitivo),
no creo que sea tan dificil darle click derecho al error y luego darle al botón de "Copiar" para pegarlo aquí de esta manera:
Código:
'resul' is not declared. It may be inaccessible due to its protection level.

Disulpa pero sabes que soy muy estricto con los detalles, proporcionar la información del error (el mensaje y el stacktrace, sin modificar) es el detalle más importante que se debería tener en cuenta cuando alguien tiene una duda.

Dicho esto, el error se debe a que no has declarado ninguna variable con el nombre 'resul' ni 'palabra', si quieres solucionar el error debes declararlas ...obviamente, jeje.
Código
  1. Dim resul As ¿? = ¿?
  2. Dim palabra As String = ""

Fuera de los Subs tienes declaradas las variables 'Result1', 'Result2' y 'Result3'.
Luego en el bloque del método 'Sumar' tienes una variable 'result' declarada, la 'vida' de esta variable se termina al finalizar el método.
Luego dentro del mismo bloque de 'Sumar' tienes una variable llamada 'Result22' y otra 'Result222'

¿Que lio es ese?, en serio, depeja todo ese lio de variables, colócalas al inicio del código (es decir, fuera de los subs), asígnales un nombre apropiado a cada variable para saber cual es su finalidad y así no dar lugar a equivocaciones, también podrías añadirle un pequeño comentario a cada una de las variables para dejarlo más claro incluso, y luego inizializa cada variable ahí mismo o cuando sea necesario si lo prefieres...

Creo que solo tú te puedes hacerte una idea de que variables deberían ir en 'resul' y 'palabra' para poder corregir esa parte del código que mostraste.

Saludos!


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 15 Agosto 2014, 21:16
Bien te esplico mi proyecto :) jejej a ver si me hago entender, como siempre pasa uno sabe lo que quiere pero nunca logro hacerlo entender o explicar

input como tu dices :)

la variable result contiene x numeros que van desde 01 hasta el 99 pero según los resultados pueden ser menos.

supongamos que que la variable contenga estos números; ( pongo solo hasta el 30 para hacerlo corto )


input
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30


con estos números hay que formar grupos o combinaciones de 10 números saltando de dos en dos:

salida...

01 04 07 10 13 16 19 22 25 28

02 05 08 11 14 17 20 23 26 29

03 06 09 12 15 18 21 24 27 30

04 07 10 13 16 19 22 24 28  ?  <- aca rellenar con un numero dentro del rango 01 al 99 y por supuesto no se repita en la conbinacion esto es cuando se agoten los números de que tenga la variable

05 08 11 14 17 20 23 26 29  ? < igual poner numero dentro del rango y que no repita y esto hasta que acabe con el ultimo numero que seria el numero 30


30 ? ? ? ? ? ? ? ? ? ?

Motrar de menor a mayor en un lisxbot



saludos


Luis




Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 16 Agosto 2014, 03:29
04 07 10 13 16 19 22 24 28  ?  <- aca rellenar con un numero dentro del rango 01 al 99 y por supuesto no se repita en la conbinacion esto es cuando se agoten los números de que tenga la variable

1.
¿el número del 1 al 99 del interogante debe ser aleatorio? (ej: ¿daría igual si es 5 o 95?), o por lo contrario debería seguir un orden de incremento (primero el 1, luego en el siguiente interrogante el 2, y en otro interrogante el 3, etc...)

2.
¿el número del interogante debe ser un número del 1 al 99, pero ese número además debe existir dentro de la variable Result? (y, repito lo del punto .1, ¿debe ser aleatorio?)



En teoría supongo que con un For asignándole un Step de 2 e incrementando el valor de una variable que usariamos para especificar el índice del elemento inicial en cada repetición del búcle sería suficiente, pero lo de los interrogantes lo veo algo más complicado, quizás no lo sea tanto, aclárame eso y veré lo que puedo hacer.

Saludos!


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 16 Agosto 2014, 05:02
1.
¿el número del 1 al 99 del interogante debe ser aleatorio? (ej: ¿daría igual si es 5 o 95?), o por lo contrario debería seguir un orden de incremento (primero el 1, luego en el siguiente interrogante el 2, y en otro interrogante el 3, etc...)

2.
¿el número del interogante debe ser un número del 1 al 99, pero ese número además debe existir dentro de la variable Result? (y, repito lo del punto .1, ¿debe ser aleatorio?)




En teoría supongo que con un For asignándole un Step de 2 e incrementando el valor de una variable que usariamos para especificar el índice del elemento inicial en cada repetición del búcle sería suficiente, pero lo de los interrogantes lo veo algo más complicado, quizás no lo sea tanto, aclárame eso y veré lo que puedo hacer.

Saludos!



Diossssssss son las 4 y bastante de la madrugada  vengo de fiesta y estas aca jo descanza chico mañana te cuento :)

luis





Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 16 Agosto 2014, 11:40

Hola

no debe ser aleatorio, ya que siempre cuando se ejecute el programa siempre deben salir las mismas combinaciones salvo que cambie el imput o los numeros en la variable

los números a rellenar no importa estén o no en la variable siempre y cuando no repitan en la misma combinación y estén dentro del rango establecido .y termina cuando acabe el ultimo numero de la variable


Buen dia ;)

Luis


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 18 Agosto 2014, 07:25
los números a rellenar no importa estén o no en la variable siempre y cuando no repitan en la misma combinación

Sinceramente, no se si es esto lo que andas buscando, pero es que con todo el material que se te ha ofrecido a lo largo del tiempo (incluyendo el siguiente código), creo que ya debería ser suficiente para que pudieras adaptar el código a tus necesidades haciendole los cambios que creas necesario.

Bueno, a ver si esta vez es la buena,
los números a rellenar no se repiten en la combinación actual, pero como siempre hay un "pero"... quizás te referías a que no se repitiera en ninguna de las combinaciones tampoco, pero eso sería imposible con un rango del 1 al 99 (ya que con los 30 números fijos de tu ejemplo y en combinaciones de 10 dígitos, sería necesario más de 99 números distintos aleatorios para rellenar los interrogantes, así que supongo que no lo habré entendido mal).

Nota: En la lista Combo se va generando la combinación actual, y una vez la combinación se completa ésta se añade a la colección Combos.

El código:

Código
  1. Public Class LuisClass
  2.  
  3.    ReadOnly Randomizer As New Random
  4.  
  5.    ReadOnly FixedValues As Integer() =
  6.        Enumerable.Range(1I, 30I).ToArray ' 1 to 30
  7.  
  8.    ReadOnly RandomValues As Integer() =
  9.        Enumerable.Range(FixedValues.First, FixedValues.Last).ToArray ' 1 to 30
  10.  
  11.    Private Sub Test() Handles MyBase.Shown
  12.  
  13.        Dim IndexCounter As Integer = FixedValues.First ' 1
  14.        Dim LenCounter As Integer = 0I
  15.  
  16.        Const NumStep As Integer = 3I
  17.        Const NumLen As Integer = 10I
  18.  
  19.        Dim Combo As New List(Of Integer)
  20.        Dim Combos As New List(Of List(Of Integer))
  21.  
  22.        Do Until IndexCounter > FixedValues.Last ' IndexCounter > 30
  23.  
  24.            For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep ' 1 to 30 Step 3
  25.  
  26.                Combo.Add(Num)
  27.                LenCounter += 1I
  28.  
  29.                If LenCounter >= NumLen Then ' Esto no es necesario en este ejemplo porque siempre dará Falso, pero lo dejo aquí.
  30.                    Exit For
  31.                End If
  32.  
  33.            Next ' Num
  34.  
  35.            If LenCounter < NumLen Then ' If LenCounter < 10
  36.  
  37.                For RandomNum As Integer = 1I To (NumLen - LenCounter)
  38.  
  39.                    Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last)
  40.  
  41.                    Do Until Not Combo.Contains(n)
  42.                        n = Randomizer.Next(RandomValues.First, RandomValues.Last)
  43.                    Loop
  44.  
  45.                    Combo.Add(n)
  46.  
  47.                Next ' RandomNum
  48.  
  49.            End If ' LenCounter < NumLen
  50.  
  51. #If DEBUG Then ' #Debug
  52.            Debug.WriteLine(String.Join(", ", Combo))
  53.            ' Stop
  54. #End If
  55.  
  56.            Combos.Add(Combo)
  57.            Combo.Clear()
  58.  
  59.            IndexCounter += 1I
  60.            LenCounter = 0I
  61.  
  62.        Loop ' IndexCounter >= FixedValues.Last
  63.  
  64.    End Sub ' Test
  65.  
  66. End Class



Output (lo he formateado manualmente en el editor de texto con un RegEx para añadirle los "0"):

01, 04, 07, 10, 13, 16, 19, 22, 25, 28
02, 05, 08, 11, 14, 17, 20, 23, 26, 29
03, 06, 09, 12, 15, 18, 21, 24, 27, 30
04, 07, 10, 13, 16, 19, 22, 25, 28, 08
05, 08, 11, 14, 17, 20, 23, 26, 29, 09
06, 09, 12, 15, 18, 21, 24, 27, 30, 22
07, 10, 13, 16, 19, 22, 25, 28, 03, 23
08, 11, 14, 17, 20, 23, 26, 29, 18, 19
09, 12, 15, 18, 21, 24, 27, 30, 14, 22
10, 13, 16, 19, 22, 25, 28, 17, 08, 14
11, 14, 17, 20, 23, 26, 29, 02, 24, 07
12, 15, 18, 21, 24, 27, 30, 04, 22, 13
13, 16, 19, 22, 25, 28, 20, 27, 04, 01
14, 17, 20, 23, 26, 29, 21, 09, 02, 10
15, 18, 21, 24, 27, 30, 29, 26, 08, 13
16, 19, 22, 25, 28, 11, 20, 03, 04, 10
17, 20, 23, 26, 29, 28, 02, 03, 21, 09
18, 21, 24, 27, 30, 01, 26, 13, 17, 25
19, 22, 25, 28, 20, 16, 29, 08, 21, 15
20, 23, 26, 29, 10, 09, 01, 08, 07, 05
21, 24, 27, 30, 03, 28, 23, 22, 18, 17
22, 25, 28, 14, 15, 18, 13, 29, 24, 10
23, 26, 29, 21, 13, 18, 05, 07, 22, 14
24, 27, 30, 04, 29, 17, 23, 02, 28, 25
25, 28, 24, 11, 19, 07, 21, 08, 02, 03
26, 29, 15, 09, 25, 18, 11, 28, 20, 06
27, 30, 18, 19, 03, 06, 24, 16, 21, 23
28, 14, 04, 19, 21, 18, 26, 24, 01, 03
29, 09, 08, 14, 02, 19, 28, 07, 17, 27
30, 04, 05, 01, 18, 21, 16, 11, 14, 02


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 18 Agosto 2014, 15:36
Gracias elektro

Como creo no saber nada :) algunas cosas ya que me da este error


Error   1   No se puede encontrar el evento 'Shown'.   ( edito ya lo resolví)

otra cosa " leyendo el codigo donde pones

Código
  1. Enumerable.Range(1I, 30I).ToArray ' 1 to 30

asumo que el programa lee que son números desde el 01 al 30 correlativamente ? si es así, no es la idea jejej ya que sabes que yo extraigo en el viejo programa unos resultados que varían y pueden ser 01 05 19 22 34 55 66 88 99 por ejemplo,y como no logro entender donde pongo mi variable para probarlo a ver

también perdona mi ignorancia pero donde muestro los resultados  estoy poniendo esto pero solo me sale  " colección "
Código
  1. ListBox1.Items.AddRange(combos.Cast(Of Object).ToArray)

gracias por tu infinita paciencia

luis


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 19 Agosto 2014, 02:28
Citar
asumo que el programa lee que son números desde el 01 al 30 correlativamente ?

Tu input, del 1 al 30:
input
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Mi input, del 1 al 30:
Citar
Código
  1. Enumerable.Range(1I, 30I).ToArray ' 1 to 30

Recuerda que el código que te he ofrecido solo es un algoritmo que mimica los pasos que has explicado en tu ejemplo, es decir: 30 combinaciones del 1 al 30, dando saltos de 3 posiciones, los combos de 10 numeros de longitud cada combo, y con numeros aleatorios dentro de un rango específico en los espacios libres a rellenar.



Citar
no es la idea
¿Que te impide modificar manualmente el array?:

Código
  1. ReadOnly FixedValues As Integer() = {1, 5, 19, 22, 34, 55, 66, 88, 99, etc...}

El código actuará (o debería actuar) de la misma manera.



Citar
donde muestro los resultados  estoy poniendo esto pero solo me sale  " colección "

Es que le estás intentando pasar una colección que tiene más colecciones dentro, es decir, una Lista de Listas (List(Of List(Of Integer))), debes pasarle solo las colecciones del interior, las sub-listas de la lista (List(Of Integer)) y tienes que pasarselas como String.

Puedes hacerlo por ejemplo de una de estas dos maneras:

1.
Código
  1.        Combos.ForEach(Sub(comb As List(Of Integer))
  2.                           ListBox1.Items.Add(String.Join(", ", comb))
  3.                       End Sub)
  4.  

2.
Código
  1.        ListBox1.Items.AddRange(
  2.            (From comb As List(Of Integer) In Combos
  3.             Select String.Join(", ", comb)).ToArray
  4.         )
  5.  



De todas formas habia un fallo con la colección Combos (al utilizar el método Combo.Clear se limpiaba también la referencia del Combo que habia dentro de Combos, por ende al final Combos resultaba ser una colección de listas vacías) así que te dejo esta nueva versión corregida y con el ejemplo del Listbox:

Código
  1. Public Class LuisClass_v2
  2.  
  3.    ReadOnly Randomizer As New Random
  4.  
  5.    ReadOnly FixedValues As Integer() =
  6.        Enumerable.Range(1I, 30I).ToArray ' 1 to 30
  7.  
  8.    ReadOnly RandomValues As Integer() =
  9.        Enumerable.Range(FixedValues.First, FixedValues.Last).ToArray ' 1 to 30
  10.  
  11.    Dim Combo As List(Of Integer) = Nothing
  12.    Dim Combos As New List(Of List(Of Integer))
  13.  
  14.    Private Sub Test() Handles MyBase.Shown
  15.  
  16.        Dim IndexCounter As Integer = FixedValues.First ' 1
  17.        Dim LenCounter As Integer = 0I
  18.  
  19.        Const NumStep As Integer = 3I
  20.        Const NumLen As Integer = 10I
  21.  
  22.        Do Until IndexCounter > FixedValues.Last ' IndexCounter > 30
  23.  
  24.            Combo = New List(Of Integer)
  25.  
  26.            For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep ' 1 to 30 Step 3
  27.  
  28.                Combo.Add(Num)
  29.                LenCounter += 1I
  30.  
  31.                If LenCounter >= NumLen Then
  32.                    Exit For
  33.                End If
  34.  
  35.            Next ' Num
  36.  
  37.            If LenCounter < NumLen Then ' If LenCounter < 10
  38.  
  39.                For RandomNum As Integer = 1I To (NumLen - LenCounter)
  40.  
  41.                    Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last)
  42.  
  43.                    Do Until Not Combo.Contains(n)
  44.                        n = Randomizer.Next(RandomValues.First, RandomValues.Last)
  45.                    Loop
  46.  
  47.                    Combo.Add(n)
  48.  
  49.                Next ' RandomNum
  50.  
  51.            End If ' LenCounter < NumLen
  52.  
  53. #If DEBUG Then ' #Debug
  54.            Debug.WriteLine(String.Join(", ", Combo))
  55.            ' Stop
  56. #End If
  57.  
  58.            Combos.Add(Combo)
  59.            IndexCounter += 1I
  60.            LenCounter = 0I
  61.  
  62.        Loop ' IndexCounter >= FixedValues.Last
  63.  
  64.        ' ********
  65.        ' Listbox:
  66.        ' ********
  67.        Combos.ForEach(Sub(comb As List(Of Integer))
  68.  
  69.                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
  70.                           ListBox1.Items.Add(String.Join(", ",
  71.                                                          From value As String In comb
  72.                                                          Select If(value.Length = 1I,
  73.                                                                    value.Insert(0I, "0"c),
  74.                                                                    value)))
  75.  
  76.                       End Sub)
  77.  
  78.    End Sub ' Test
  79.  
  80. End Class


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 19 Agosto 2014, 13:31
Mil gracias de nuevo ahora si pude hacerlo funcionar :)

Bien aca donde me pones esto , es lo debería de cambiar por mi variable " result " que es la que tiene los números después de efectuada la operación que hago en mi programa ? ya que mi idea es implementarlo a mi programa

Código
  1. ReadOnly FixedValues As Integer() = {1, 5, 19, 22, 34, 55, 66, 88, 99, etc...}

por lo demas funciona como queria lo de ordenar de menor a mayor ya me ocupo :)


gracias muchas gracias  :) :)

Luis



Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 19 Agosto 2014, 13:49
Mil gracias de nuevo ahora si pude hacerlo funcionar :)

Bien aca donde me pones esto , es lo debería de cambiar por mi variable " result " que es la que tiene los números después de efectuada la operación que hago en mi programa ?

Código
  1. ReadOnly FixedValues As Integer() = {1, 5, 19, 22, 34, 55, 66, 88, 99, etc...}

¿A cual de las miles de variables que bautizaste con el nombre de "Result" te refieres? :P

Supongo que si, en la variable FixedValues debes especificarle los numeros que se tomarán para hacer las combinaciones, en tu ejemplo pusiste del 1 al 30, no se si harás eso con la variable "result" que mencionas, pero creo que ya te hiciste una idea de lo que debe ir en esa variable FixedValues (valores fijos).

por lo demas funciona como queria

Me alegro de oir eso

PD: Por si acaso te recuerdo que para ordenar de mayor a menor lo tienes facil usando una LINQ-query:
Código
  1. dim values as integer() = (from n as integer in TUSNUMEROS order by n ascending).toarray

o el método Sort, en una lista.

Saludos!


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 20 Agosto 2014, 13:56
Hola porque no me salen los números que he puesto para combinar ? he echo algunos arreglos para combinar con cinco ya que según la cantidad de números en la variable si me paso se queda en un loop esto lo detecta,pero los números que pongo en ella no ?

Código
  1. Public Class LuisClass_v2
  2.  
  3.    ReadOnly Randomizer As New Random
  4.  
  5.    ReadOnly FixedValues As Integer() = {1, 5, 19, 22, 34, 55, 66, 88, 9, 20, 25}
  6.  
  7.    ReadOnly RandomValues As Integer() =
  8.        Enumerable.Range(FixedValues.First, FixedValues.Last).ToArray ' 1 to 30
  9.  
  10.    Dim Combo As List(Of Integer) = Nothing
  11.    Dim Combos As New List(Of List(Of Integer))
  12.  
  13.    Private Sub Test() Handles MyBase.Shown
  14.  
  15.        Dim IndexCounter As Integer = FixedValues.First ' 1
  16.        Dim LenCounter As Integer = 0I
  17.  
  18.        Const NumStep As Integer = 3I
  19.        Const NumLen As Integer = 5I
  20.  
  21.        Do Until IndexCounter > FixedValues.Last ' IndexCounter > 30
  22.  
  23.            Combo = New List(Of Integer)
  24.  
  25.            For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep ' 1 to 30 Step 3
  26.  
  27.                Combo.Add(Num)
  28.                LenCounter += 1I
  29.  
  30.                If LenCounter >= NumLen Then
  31.                    Exit For
  32.                End If
  33.  
  34.            Next ' Num
  35.  
  36.            If LenCounter < NumLen Then ' If LenCounter < 10
  37.  
  38.                For RandomNum As Integer = 1I To (NumLen - LenCounter)
  39.  
  40.                    Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last)
  41.  
  42.                    Do Until Not Combo.Contains(n)
  43.                        n = Randomizer.Next(RandomValues.First, RandomValues.Last)
  44.                    Loop
  45.  
  46.                    Combo.Add(n)
  47.  
  48.                Next ' RandomNum
  49.  
  50.            End If ' LenCounter < NumLen
  51.  
  52. #If DEBUG Then ' #Debug
  53.            Debug.WriteLine(String.Join(", ", Combo))
  54.            ' Stop
  55. #End If
  56.  
  57.            Combos.Add(Combo)
  58.            IndexCounter += 1I
  59.            LenCounter = 0I
  60.  
  61.        Loop ' IndexCounter >= FixedValues.Last
  62.  
  63.        ' ********
  64.        ' Listbox:
  65.        ' ********
  66.        Combos.ForEach(Sub(comb As List(Of Integer))
  67.  
  68.                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
  69.                           ListBox1.Items.Add(String.Join(", ",
  70.                                                          From value As String In comb
  71.                                                          Select If(value.Length = 1I,
  72.                                                                    value.Insert(0I, "0"c),
  73.                                                                    value)))
  74.  
  75.                       End Sub)
  76.  
  77.    End Sub ' Test
  78.  
  79. End Class


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 21 Agosto 2014, 10:22
porque no me salen los números que he puesto para combinar ?

Por esto:
Citar
Código
  1. For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep ' 1 to 30 Step 3
  2.  
  3.               Combo.Add(Num)
  4.               ...

Estás tomando el número de la variable num en lugar de tomar un item de la colección FixedValues, se puede decir que esto ha sido un fallo mio porque como ya sabes en ese ejemplo usé una secuencia ordenada del 1 al 30, así que se me pasó por alto ese detalle al desordenar la secuencia xD.

Prueba a ver si este es el resultado que quieres obtener:
Combo.Add(FixedValues(NumStep * LenCounter))
Edito: o lo que viene a ser lo mismo:

Código
  1. Combo.Add(FixedValues(Num - 1))

Explico:
Para generar la primera combinación con los números que has mostrado, daría saltos de '3' para tomar estas posiciones:
Código:
{ 1, , , 22, , , 66, , , 20, }
+ un número aleatorio aleatorio del rango que especificaste EDITO: del rango de 'RandomValues', para dejarlo claro.

Saludos


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 25 Agosto 2014, 19:58
Hola

Bueno tengo algunos dias tratando de hacer lo que me pusiste elektro pero no me sale

o me da combianciones raras o me da el error de variable fuera de rango te pongo el codigo a ver donde me estoy pelando


Código
  1. Public Class LuisClass_v2
  2.  
  3.    ReadOnly Randomizer As New Random
  4.  
  5.    ' Num ReadOnly FixedValues As Integer() =
  6.    ' Num   Enumerable.Range(1I, 49I).ToArray ' 1 to 30
  7.  
  8.    ReadOnly FixedValues As Integer() = {1, 5, 19, 22, 34, 55, 66, 88, 9, 20, 25}
  9.  
  10.    ReadOnly RandomValues As Integer() =
  11.        Enumerable.Range(FixedValues.First, FixedValues.Last).ToArray ' 1 to 30
  12.  
  13.    Dim Combo As List(Of Integer) = Nothing
  14.    Dim Combos As New List(Of List(Of Integer))
  15.  
  16.    Private Sub Test() Handles MyBase.Shown
  17.  
  18.        Dim IndexCounter As Integer = FixedValues.First ' 1
  19.        Dim LenCounter As Integer = 0I
  20.  
  21.        Const NumStep As Integer = 3I
  22.        Const NumLen As Integer = 6I
  23.  
  24.        Do Until IndexCounter > FixedValues.Last ' IndexCounter > 30
  25.  
  26.            Combo = New List(Of Integer)
  27.  
  28.            For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep ' 1 to 30 Step 3
  29.  
  30.                '  Combo.Add(Num)
  31.                '  LenCounter += 1I
  32.  
  33.                Combo.Add(FixedValues(NumStep * LenCounter))
  34.  
  35.                If LenCounter >= NumLen Then
  36.                    Exit For
  37.                End If
  38.  
  39.            Next ' Num
  40.  
  41.            If LenCounter < NumLen Then ' If LenCounter < 10
  42.  
  43.                For RandomNum As Integer = 1I To (NumLen - LenCounter)
  44.  
  45.                    Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last)
  46.  
  47.                    Do Until Not Combo.Contains(n)
  48.                        n = Randomizer.Next(RandomValues.First, RandomValues.Last)
  49.                    Loop
  50.  
  51.                    Combo.Add(n)
  52.  
  53.                Next ' RandomNum
  54.  
  55.            End If ' LenCounter < NumLen
  56.  
  57. #If DEBUG Then ' #Debug
  58.            Debug.WriteLine(String.Join(", ", Combo))
  59.            ' Stop
  60. #End If
  61.  
  62.            Combos.Add(Combo)
  63.            IndexCounter += 1I
  64.            LenCounter = 0I
  65.  
  66.        Loop ' IndexCounter >= FixedValues.Last
  67.  
  68.        ' ********
  69.        ' Listbox:
  70.        ' ********
  71.        Combos.ForEach(Sub(comb As List(Of Integer))
  72.  
  73.                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
  74.                           ListBox1.Items.Add(String.Join(", ",
  75.                                                          From value As String In comb
  76.                                                          Select If(value.Length = 1I,
  77.                                                                    value.Insert(0I, "0"c),
  78.                                                                    value)))
  79.  
  80.                       End Sub)
  81.  
  82.    End Sub ' Test
  83.  
  84. End Class


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 25 Agosto 2014, 20:11
Código
  1.            For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep
  2.  
  3.                LenCounter += 1I
  4.                Combo.Add(FixedValues(Num - 1I))
  5.  
  6.                If LenCounter >= NumLen Then
  7.                    Exit For
  8.                End If
  9.  
  10.            Next Num

PD: no se si ese será el resultado que quieres obtener, pero esa es la correción para que funcione el código.

saludos!


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 26 Agosto 2014, 06:52
Ahora si :) ya me toma los numeros y los combina

ya estoy con lo del ordenamiento de menor a mayor pero me da este error que un valor de sistems no se puede convertir a string

Código
  1. ' ******** ordenamiento-------------
  2.        Dim values As Integer() = (From n As Integer In Combos Order By n Ascending).ToArray
  3.  
  4.        ' ********
  5.        ' Listbox:
  6.        ' ********
  7.        Combos.ForEach(Sub(comb As List(Of Integer))
  8.  
  9.                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
  10.                           ListBox1.Items.Add(String.Join(", ",
  11.                                                          From value As String In comb
  12.                                                          Select If(value.Length = 1I,
  13.                                                                    value.Insert(0I, "0"c),
  14.                                                                    value)))
  15.  
  16.                       End Sub)
  17.  
  18.    End Sub ' Test
  19.  



saludos
Luis


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 26 Agosto 2014, 10:34
¿Que habiamos hablado sobre dar detalles específicos del error?.

De decir esto:
me da este error que un valor de sistems no se puede convertir a string

A esto:
Código:
Value of type 'System.Collections.Generic.List(Of Integer)' cannot be converted to 'String'.

...hay todo un trecho. y ya si indicases que instrucción es la que te da error, mejor aún.



Si has modificado la declaración de Combos entonces muestrala (Dim Combos As...)

El código me funciona, ¿quizás tengas activado Option Strict On?

Prueba así:

Código
  1.    ListBox1.Items.Add(String.Join(", ",
  2.                                   From value As Integer In comb
  3.                                   Select If(CStr(value).Length = 1I,
  4.                                             CStr(value).Insert(0I, "0"),
  5.                                             CStr(value))))

Saludos!


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 26 Agosto 2014, 19:38
Hola

Bien sigo probando no he modificado nada del codigo solo añadi la rutina que me pusiste arriba y esta es la que me da  " Error 1 Un valor de tipo 'System.Collections.Generic.List(Of Integer)' no se puede convertir en 'Integer'. "

Código
  1. Dim values As Integer() = (From n As Integer In Combos Order By n Ascending).ToArray

lo que busco es ordenar las combinaciones que se muestran en el listbox ordenados de menor a mayor


luis


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 26 Agosto 2014, 20:32
lo que busco es ordenar las combinaciones que se muestran en el listbox ordenados de menor a mayor

Con esto ordenas las combinaciones de menor a mayor:
Código
  1.        Dim Sorted As List(Of List(Of Integer)) =
  2.            (From combo As List(Of Integer) In Combos
  3.             Order By Convert.ToInt64(String.Join("", combo)) Ascending).ToList

Pero eso no es suficiente, sería algo más complicado de hacer ya que las combinaciones no tienen la misma longitud, los "0" son un añadido después.

Lo mejor es que olvides eso de ordenarlas tú y dejes que el listbox ordene los items por ti:

Código
  1. ListBox1.Sorted = True

(http://i.imgur.com/szIoECn.jpg)

Saludos.


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 26 Agosto 2014, 20:57
Hola
Cuando me dices que pruebe con " ListBox1.Sorted = True " lo hice en diseño o propiedad del listbox y nada tambien lo puse en el codigo y nada


Código
  1. Combos.ForEach(Sub(comb As List(Of Integer))
  2.  
  3.                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
  4.                           ListBox1.Items.Add(String.Join(", ",
  5.                                                          From value As String In comb
  6.                                                          Select If(value.Length = 1I,
  7.                                                                    value.Insert(0I, "0"c),
  8.                                                                    value)))
  9.                           ListBox1.Sorted = True
  10.  
  11.                       End Sub)


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 26 Agosto 2014, 21:36
nada tambien lo puse en el codigo y nada

No se que significa "nada", Luis.

Mira la imagen de mi último comentario, están las combinaciones ordenadas de menor a mayor, ¿ves alguna diferencia entre ese "output" y el que tu obtienes?, da más detalles, si el código es el que me pasaste y no le has echo modificaciones en este rato entonces tendría que funcionar.

Con que actives la propiedad una sola vez (sea donde sea) es suficiente, sácala del foreach porque la estás activando una y otra vez, de todas formas eso no supondría un problema, pero es innecesario.

saludos


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 26 Agosto 2014, 22:05
No me sale y nada significa que no me ordena las combinaciones

Código
  1. Public Class LuisClass_v2
  2.  
  3.    ReadOnly Randomizer As New Random
  4.  
  5.    ' Num ReadOnly FixedValues As Integer() =
  6.    ' Num   Enumerable.Range(1I, 49I).ToArray ' 1 to 30
  7.  
  8.    ReadOnly FixedValues As Integer() = {1, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50}
  9.  
  10.    ReadOnly RandomValues As Integer() =
  11.        Enumerable.Range(FixedValues.First, FixedValues.Last).ToArray ' 1 to 30
  12.  
  13.    Dim Combo As List(Of Integer) = Nothing
  14.    Dim Combos As New List(Of List(Of Integer))
  15.  
  16.    Private Sub Test() Handles MyBase.Shown
  17.  
  18.        Dim IndexCounter As Integer = FixedValues.First ' 1
  19.        Dim LenCounter As Integer = 0I
  20.  
  21.        Const NumStep As Integer = 3I
  22.        Const NumLen As Integer = 10I
  23.  
  24.        Do Until IndexCounter > FixedValues.Last ' IndexCounter > 30
  25.  
  26.            Combo = New List(Of Integer)
  27.  
  28.            For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep
  29.  
  30.                LenCounter += 1I
  31.                Combo.Add(FixedValues(Num - 1I))
  32.  
  33.                If LenCounter >= NumLen Then
  34.                    Exit For
  35.                End If
  36.  
  37.            Next Num
  38.  
  39.  
  40.  
  41.            If LenCounter < NumLen Then ' If LenCounter < 10
  42.  
  43.                For RandomNum As Integer = 1I To (NumLen - LenCounter)
  44.  
  45.                    Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last)
  46.  
  47.                    Do Until Not Combo.Contains(n)
  48.                        n = Randomizer.Next(RandomValues.First, RandomValues.Last)
  49.                    Loop
  50.  
  51.                    Combo.Add(n)
  52.  
  53.                Next ' RandomNum
  54.  
  55.            End If ' LenCounter < NumLen
  56.  
  57. #If DEBUG Then ' #Debug
  58.            Debug.WriteLine(String.Join(", ", Combo))
  59.            ' Stop
  60. #End If
  61.  
  62.            Combos.Add(Combo)
  63.            IndexCounter += 1I
  64.            LenCounter = 0I
  65.  
  66.        Loop ' IndexCounter >= FixedValues.Last
  67.  
  68.        ' ******** ordenamiento-------------
  69.        '  Dim values As Integer() = (From n As Integer In Combos Order By n Ascending).ToArray
  70.  
  71.        ' ********
  72.        ' Listbox:
  73.        ' ********
  74.        Combos.ForEach(Sub(comb As List(Of Integer))
  75.  
  76.                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
  77.                           ListBox1.Items.Add(String.Join(", ",
  78.                                                          From value As String In comb
  79.                                                          Select If(value.Length = 1I,
  80.                                                                    value.Insert(0I, "0"c),
  81.                                                                    value)))
  82.                           ListBox1.Sorted = True
  83.  
  84.                       End Sub)
  85.    End Sub ' Test
  86.  
  87. End Class


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 26 Agosto 2014, 22:35
A mi me las ordena, Luis.

Creo que tu te estás refiriendo que además de ordenar la lista que contiene las combinaciones (de menos a mayor), ¿quieres ordenar los números de cada combinacion, por separado?.

saludos


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 27 Agosto 2014, 05:31
Hola

Lo que me refiero es que cada combinación este ordenada de menor a mayor

Tomo una combinación que me da el programa y veras que esta desordenada

01 15 30 45 49 10 39 28 04 03 <-- asi me los pone el código ahora

01 03 04 10 15 28 30 39 45 49 <---asi es que quiero ordenarlos


Luis





Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 27 Agosto 2014, 05:50
Lo que me refiero es que cada combinación este ordenada de menor a mayor

Entonces, antes de añadir la combinación (Combo) a la lista de combinaciones (Combos), ordénala usando el método Sort.

Código
  1. Combo.Sort() ' <---- aquí ordeno la combinación actual.
  2.  
  3. Combos.Add(Combo) ' <---- aquí añado la combinación ordenada al resto de combinaciones.
  4.  
  5. ' y aquí sigo con el código como estaba...
  6. IndexCounter += 1I
  7. LenCounter = 0I
  8. etc...

saludos


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 27 Agosto 2014, 06:06
Listo :)    funciona como quería

Muchas gracias elektro

Luis

( nos levantamos pronto ee)


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 28 Agosto 2014, 13:11
Como contar cuantas combinaciones hay en el listbox ?

Buscando encontre esta rutina funciona pero lo que hace es comparar las combinaciones y decirme que solo hay una combinacion eso lo sabemos ya que el pograma no da repetidos nesecito saber cuantas hay en total.

contar y mostrar    " Combinaciones = 30 "  o la cantidad que salgan :)

codigo que encontre a alguien le puede servir para comparar registros :)

Código
  1. ' contar que no ay repetidos
  2.  
  3.    Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
  4.  
  5.        Dim query = From item As String In ListBox1.Items.Cast(Of String)() _
  6.                    Order By item _
  7.                    Group By item = item _
  8.                    Into Total = Group, Count() _
  9.                    Select Total
  10.  
  11.        Dim msg As New System.Text.StringBuilder()
  12.  
  13.        For Each item In query
  14.            msg.AppendLine(String.Format("Combinaciones {0} existen {1}", item(0), item.Count))
  15.        Next
  16.  
  17.        MessageBox.Show(msg.ToString())
  18.  
  19.    End Sub


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 28 Agosto 2014, 13:23
Solucionado ;)

Código
  1. Label1.Text = CStr(ListBox1.Items.Count)


luis


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 28 Agosto 2014, 13:49
Solucionado ;)

Bien, pero debes intentar interactuar lo más mínimo con la UI.

Código
  1. Combos.Count

Saludos


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 28 Agosto 2014, 14:18
Gracias Elektro por tus consejos :) ahora tengo otro reto (para mi jeje) no me respondas que voy a ver si lo hago ( si no lo logro, grito auxilio ) tengo este código que ya conoces de sobra jejej

Código
  1. Public Class Form1
  2.  
  3.    Dim maximum As Short = 99
  4.    Dim x As Integer = 0
  5.    Dim Número As Double
  6.    Private TextBoxes As TextBox() = {Nothing}
  7.    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
  8.    Private _textBox As Object
  9.    Private Property ListBox1Count As Integer
  10.    ReadOnly MAX As Integer = 99
  11.  
  12.  
  13.  
  14.    Private Property Calcular As Object
  15.  
  16.    Private Property TextBox(ByVal TextBoxCount As Short) As Object
  17.        Get
  18.            Return _textBox
  19.        End Get
  20.        Set(ByVal value As Object)
  21.            _textBox = value
  22.        End Set
  23.    End Property
  24.  
  25.    Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
  26.        ' evitar letras
  27.        If Char.IsDigit(e.KeyChar) Then
  28.            e.Handled = False
  29.        ElseIf Char.IsControl(e.KeyChar) Then
  30.            e.Handled = False
  31.        ElseIf Char.IsSeparator(e.KeyChar) Then
  32.            e.Handled = False
  33.        Else
  34.            e.Handled = True
  35.        End If
  36.  
  37.    End Sub
  38.  
  39.  
  40.    ReadOnly Property Num1 As Int32
  41.        Get
  42.            Return CInt(TextBox1.Text)
  43.        End Get
  44.    End Property
  45.  
  46.    ReadOnly Property Num2 As Int32
  47.        Get
  48.            Return CInt(TextBox2.Text)
  49.        End Get
  50.    End Property
  51.    ReadOnly Property Num3 As Int32
  52.        Get
  53.            Return CInt(TextBox3.Text)
  54.        End Get
  55.    End Property
  56.  
  57.  
  58.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  59.  
  60.  
  61.        Result1 = {Num1 + 1, Num1 + 2, Num1 + 4, Num1 + 6, Num1 - 4, Num1 - 1} _
  62.                  .Distinct().ToArray ' Elimino duplicados
  63.  
  64.        Result2 = {Num2 + 1, Num2 + 2, Num2 + 3, Num2 - 1, Num2 - 2, Num1 - 3} _
  65.                  .Distinct().ToArray ' Elimino duplicados
  66.  
  67.        Result3 = {Num3 - 1, Num3 - 2, Num3 - 3, Num3 + 2, Num3 + 3, Num3 + 5} _
  68.                  .Distinct().ToArray ' Elimino duplicados
  69.  
  70.  
  71.        Dim Rand As New Random
  72.        ' Concateno, y...
  73.        ' Elimino duplicados, y...
  74.        ' Selecciono los números inferiores a MAX, y...
  75.        ' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX.
  76.        Dim Result As IEnumerable(Of Integer) =
  77.            (Result1.Concat(Result2).Concat(Result3)).
  78.            Distinct.
  79.            Select(Function(Value As Integer)
  80.                       Return If(Value < MAX, Value, Rand.Next(0, MAX))
  81.                   End Function)
  82.        ListBox1.Items.AddRange(Result.Cast(Of Object).ToArray)
  83.    End Sub
  84. End Class
  85.  



Y quiero integrarlo a este que funciona ya gracias a ti :) donde  a la variable " FixedValues " enviarle los datos de la variable " Result "  ya seguro me dara errores del tipo integer :) y esas cosas jejej


Código
  1. Imports System.IO
  2.  
  3. Public Class LuisClass_v2
  4.  
  5.    ReadOnly Randomizer As New Random
  6.  
  7.    ' Num ReadOnly FixedValues As Integer() =
  8.    ' Num   Enumerable.Range(1I, 49I).ToArray ' 1 to 30
  9.  
  10.    ReadOnly FixedValues As Integer() = {1, 5, 10, 15, 20, 25, 30, 33, 35, 38, 40, 45, 48}
  11.  
  12.    ReadOnly RandomValues As Integer() =
  13.        Enumerable.Range(FixedValues.First, FixedValues.Last).ToArray ' 1 to 30
  14.  
  15.    Dim Combo As List(Of Integer) = Nothing
  16.    Dim Combos As New List(Of List(Of Integer))
  17.  
  18.    Private Sub Test() Handles MyBase.Shown
  19.  
  20.        Dim IndexCounter As Integer = FixedValues.First ' 1
  21.        Dim LenCounter As Integer = 0I
  22.  
  23.        Const NumStep As Integer = 5I
  24.        Const NumLen As Integer = 6I
  25.  
  26.        Do Until IndexCounter > FixedValues.Last ' IndexCounter > 30
  27.  
  28.            Combo = New List(Of Integer)
  29.  
  30.            For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep
  31.  
  32.                LenCounter += 1I
  33.                Combo.Add(FixedValues(Num - 1I))
  34.  
  35.                If LenCounter >= NumLen Then
  36.                    Exit For
  37.                End If
  38.  
  39.            Next Num
  40.  
  41.  
  42.  
  43.            If LenCounter < NumLen Then ' If LenCounter < 10
  44.  
  45.                For RandomNum As Integer = 1I To (NumLen - LenCounter)
  46.  
  47.                    Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last)
  48.  
  49.                    Do Until Not Combo.Contains(n)
  50.                        n = Randomizer.Next(RandomValues.First, RandomValues.Last)
  51.                    Loop
  52.  
  53.                    Combo.Add(n)
  54.  
  55.                Next ' RandomNum
  56.  
  57.            End If ' LenCounter < NumLen
  58.  
  59. #If DEBUG Then ' #Debug
  60.            Debug.WriteLine(String.Join(", ", Combo))
  61.            ' Stop
  62. #End If
  63.            Combo.Sort()
  64.            Combos.Add(Combo)
  65.            IndexCounter += 1I
  66.            LenCounter = 0I
  67.  
  68.        Loop ' IndexCounter >= FixedValues.Last
  69.  
  70.        ' ******** ordenamiento-------------
  71.        '  Dim values As Integer() = (From n As Integer In Combos Order By n Ascending).ToArray
  72.  
  73.        ' ********
  74.        ' Listbox:
  75.        ' ********
  76.        Combos.ForEach(Sub(comb As List(Of Integer))
  77.  
  78.                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
  79.                           ListBox1.Items.Add(String.Join(", ",
  80.                                                          From value As String In comb
  81.                                                          Select If(value.Length = 1I,
  82.                                                                    value.Insert(0I, "0"c),
  83.                                                                    value)))
  84.                           ListBox1.Sorted = True
  85.  
  86.  
  87.  
  88.                       End Sub)
  89.    End Sub ' Test
  90.  
  91.  
  92.  
  93.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  94.        Dim rutaFichero As String
  95.        Dim i As Integer
  96.  
  97.        rutaFichero = Path.Combine(Application.StartupPath, "contenido_listbox.txt")
  98.        Dim fichero As New IO.StreamWriter(rutaFichero)
  99.        For i = 0 To ListBox1.Items.Count - 1
  100.            fichero.WriteLine(ListBox1.Items(i))
  101.        Next
  102.        fichero.Close()
  103.    End Sub
  104.    ' contar que no ay repetidos
  105.  
  106.    Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
  107.  
  108.        Label1.Text = CStr(ListBox1.Items.Count)
  109.  
  110.        Dim query = From item As String In ListBox1.Items.Cast(Of String)() _
  111.                    Order By item _
  112.                    Group By item = item _
  113.                    Into Total = Group, Count() _
  114.                    Select Total
  115.  
  116.        Dim msg As New System.Text.StringBuilder()
  117.  
  118.        For Each item In query
  119.            msg.AppendLine(String.Format("Combinaciones {0} existen {1}", item(0), item.Count))
  120.        Next
  121.  
  122.        MessageBox.Show(msg.ToString())
  123.  
  124.    End Sub
  125.  
  126.  
  127. End Class
  128.  


Gracias por tu paciencia

Luis








Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 28 Agosto 2014, 14:55
jeje AUXILIO, No de verdad que no tengo nocion de como unir esto ;( ya sera que confundo mucho con tantas cosas a la ves

Cuando lo ejecuto de una ves me hace lo del segundo codigo y se supone que debe ser cuando se ejecute el primero y cambie los valores de " FixedValues " con los de  " Result "


Chapuza que tengo echa :)

Código
  1. Imports System.IO
  2. Public Class Form1
  3.  
  4.    Dim maximum As Short = 99
  5.    Dim x As Integer = 0
  6.    Dim Número As Double
  7.    Private TextBoxes As TextBox() = {Nothing}
  8.    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
  9.    Private _textBox As Object
  10.    Private Property ListBox1Count As Integer
  11.    ReadOnly MAX As Integer = 99
  12.    ReadOnly Randomizer As New Random
  13.    Dim Combo As List(Of Integer) = Nothing
  14.    Dim Combos As New List(Of List(Of Integer))
  15.  
  16.    ReadOnly FixedValues As Integer() = {1, 5, 10, 15, 20, 25, 30, 33, 35, 38, 40, 45, 48}
  17.    ReadOnly RandomValues As Integer() =
  18.        Enumerable.Range(FixedValues.First, FixedValues.Last).ToArray ' 1 to 30
  19.  
  20.  
  21.    Private Property Calcular As Object
  22.  
  23.    Private Property TextBox(ByVal TextBoxCount As Short) As Object
  24.        Get
  25.            Return _textBox
  26.        End Get
  27.        Set(ByVal value As Object)
  28.            _textBox = value
  29.        End Set
  30.    End Property
  31.  
  32.    Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
  33.        ' evitar letras
  34.        If Char.IsDigit(e.KeyChar) Then
  35.            e.Handled = False
  36.        ElseIf Char.IsControl(e.KeyChar) Then
  37.            e.Handled = False
  38.        ElseIf Char.IsSeparator(e.KeyChar) Then
  39.            e.Handled = False
  40.        Else
  41.            e.Handled = True
  42.        End If
  43.  
  44.    End Sub
  45.  
  46.  
  47.    ReadOnly Property Num1 As Int32
  48.        Get
  49.            Return CInt(TextBox1.Text)
  50.        End Get
  51.    End Property
  52.  
  53.    ReadOnly Property Num2 As Int32
  54.        Get
  55.            Return CInt(TextBox2.Text)
  56.        End Get
  57.    End Property
  58.    ReadOnly Property Num3 As Int32
  59.        Get
  60.            Return CInt(TextBox3.Text)
  61.        End Get
  62.    End Property
  63.  
  64.  
  65.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  66.  
  67.  
  68.        Result1 = {Num1 + 1, Num1 + 2, Num1 + 4, Num1 + 6, Num1 - 4, Num1 - 1} _
  69.                  .Distinct().ToArray ' Elimino duplicados
  70.  
  71.        Result2 = {Num2 + 1, Num2 + 2, Num2 + 3, Num2 - 1, Num2 - 2, Num1 - 3} _
  72.                  .Distinct().ToArray ' Elimino duplicados
  73.  
  74.        Result3 = {Num3 - 1, Num3 - 2, Num3 - 3, Num3 + 2, Num3 + 3, Num3 + 5} _
  75.                  .Distinct().ToArray ' Elimino duplicados
  76.  
  77.  
  78.        Dim Rand As New Random
  79.        ' Concateno, y...
  80.        ' Elimino duplicados, y...
  81.        ' Selecciono los números inferiores a MAX, y...
  82.        ' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX.
  83.        Dim Result As IEnumerable(Of Integer) =
  84.            (Result1.Concat(Result2).Concat(Result3)).
  85.            Distinct.
  86.            Select(Function(Value As Integer)
  87.                       Return If(Value < MAX, Value, Rand.Next(0, MAX))
  88.                   End Function)
  89.        ListBox1.Items.AddRange(Result.Cast(Of Object).ToArray)
  90.        ' ******** ------------------------------------------------------------------
  91.  
  92.  
  93.        ' Num ReadOnly FixedValues As Integer() =
  94.        ' Num   Enumerable.Range(1I, 49I).ToArray ' 1 to 30
  95.  
  96.    End Sub
  97.    Private Sub Test() Handles MyBase.Shown
  98.  
  99.        Dim IndexCounter As Integer = FixedValues.First ' 1
  100.        Dim LenCounter As Integer = 0I
  101.  
  102.        Const NumStep As Integer = 5I
  103.        Const NumLen As Integer = 6I
  104.  
  105.        Do Until IndexCounter > FixedValues.Last ' IndexCounter > 30
  106.  
  107.            Combo = New List(Of Integer)
  108.  
  109.            For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep
  110.  
  111.                LenCounter += 1I
  112.                Combo.Add(FixedValues(Num - 1I))
  113.  
  114.                If LenCounter >= NumLen Then
  115.                    Exit For
  116.                End If
  117.  
  118.            Next Num
  119.  
  120.  
  121.  
  122.            If LenCounter < NumLen Then ' If LenCounter < 10
  123.  
  124.                For RandomNum As Integer = 1I To (NumLen - LenCounter)
  125.  
  126.                    Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last)
  127.  
  128.                    Do Until Not Combo.Contains(n)
  129.                        n = Randomizer.Next(RandomValues.First, RandomValues.Last)
  130.                    Loop
  131.  
  132.                    Combo.Add(n)
  133.  
  134.                Next ' RandomNum
  135.  
  136.            End If ' LenCounter < NumLen
  137.  
  138. #If DEBUG Then ' #Debug
  139.            Debug.WriteLine(String.Join(", ", Combo))
  140.            ' Stop
  141. #End If
  142.            Combo.Sort()
  143.            Combos.Add(Combo)
  144.            IndexCounter += 1I
  145.            LenCounter = 0I
  146.  
  147.        Loop ' IndexCounter >= FixedValues.Last
  148.  
  149.        ' ******** ordenamiento-------------
  150.        '  Dim values As Integer() = (From n As Integer In Combos Order By n Ascending).ToArray
  151.  
  152.        ' ********
  153.        ' Listbox:
  154.        ' ********
  155.        Combos.ForEach(Sub(comb As List(Of Integer))
  156.  
  157.                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
  158.                           ListBox1.Items.Add(String.Join(", ",
  159.                                                          From value As String In comb
  160.                                                          Select If(value.Length = 1I,
  161.                                                                    value.Insert(0I, "0"c),
  162.                                                                    value)))
  163.                           ListBox1.Sorted = True
  164.  
  165.  
  166.  
  167.                       End Sub)
  168.    End Sub ' Test
  169.  
  170. End Class
  171.  


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 28 Agosto 2014, 20:38
Citar
Código
  1.    Private Sub Test() Handles MyBase.Shown

¿Eso no te dice nada?

Todo lo que hay en el interior de ese bloque se ejecuta en el evento Shown.

La finalidad (según me parece a mi tu intención) sería quitarlo de ahí para meterlo/adaptarlo en el bloque del sub Sumar.

Saludos

EDITO: por lo que dices, quizás pueda ser algo como esto:

Código
  1. Imports System.IO
  2. Public Class Form1
  3.  
  4.    Dim maximum As Short = 99
  5.    Dim x As Integer = 0
  6.    Dim Número As Double
  7.    Private TextBoxes As TextBox() = {Nothing}
  8.    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
  9.    Private _textBox As Object
  10.    Private Property ListBox1Count As Integer
  11.    ReadOnly MAX As Integer = 99
  12.    ReadOnly Randomizer As New Random
  13.    Dim Combo As List(Of Integer) = Nothing
  14.    Dim Combos As New List(Of List(Of Integer))
  15.  
  16.    Dim FixedValues As Integer() = Nothing
  17.    ReadOnly RandomValues As Integer() =
  18.        Enumerable.Range(0, 99).ToArray
  19.  
  20.  
  21.    Private Property Calcular As Object
  22.  
  23.    Private Property TextBoX(ByVal TextBoxCount As Short) As Object
  24.        Get
  25.            Return _textBox
  26.        End Get
  27.        Set(ByVal value As Object)
  28.            _textBox = value
  29.        End Set
  30.    End Property
  31.  
  32.    Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
  33.        ' evitar letras
  34.        If Char.IsDigit(e.KeyChar) Then
  35.            e.Handled = False
  36.        ElseIf Char.IsControl(e.KeyChar) Then
  37.            e.Handled = False
  38.        ElseIf Char.IsSeparator(e.KeyChar) Then
  39.            e.Handled = False
  40.        Else
  41.            e.Handled = True
  42.        End If
  43.  
  44.    End Sub
  45.  
  46.  
  47.    ReadOnly Property Num1 As Int32
  48.        Get
  49.            Return CInt(TextBox1.Text)
  50.        End Get
  51.    End Property
  52.  
  53.    ReadOnly Property Num2 As Int32
  54.        Get
  55.            Return CInt(TextBox2.Text)
  56.        End Get
  57.    End Property
  58.    ReadOnly Property Num3 As Int32
  59.        Get
  60.            Return CInt(TextBox3.Text)
  61.        End Get
  62.    End Property
  63.  
  64.  
  65.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  66.  
  67.        Result1 = {Num1 + 1, Num1 + 2, Num1 + 4, Num1 + 6, Num1 - 4, Num1 - 1} _
  68.                  .Distinct().ToArray ' Elimino duplicados
  69.  
  70.        Result2 = {Num2 + 1, Num2 + 2, Num2 + 3, Num2 - 1, Num2 - 2, Num1 - 3} _
  71.                  .Distinct().ToArray ' Elimino duplicados
  72.  
  73.        Result3 = {Num3 - 1, Num3 - 2, Num3 - 3, Num3 + 2, Num3 + 3, Num3 + 5} _
  74.                  .Distinct().ToArray ' Elimino duplicados
  75.  
  76.        Dim Rand As New Random
  77.        FixedValues =
  78.            (Result1.Concat(Result2).Concat(Result3)).
  79.            Distinct.
  80.            Select(Function(Value As Integer)
  81.                       Return If(Value < MAX, Value, Rand.Next(0, MAX))
  82.                   End Function)
  83.  
  84.        Dim IndexCounter As Integer = FixedValues.First ' 1
  85.        Dim LenCounter As Integer = 0I
  86.  
  87.        Const NumStep As Integer = 5I
  88.        Const NumLen As Integer = 6I
  89.  
  90.        Do Until IndexCounter > FixedValues.Last
  91.  
  92.            Combo = New List(Of Integer)
  93.  
  94.            For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep
  95.  
  96.                LenCounter += 1I
  97.                Combo.Add(FixedValues(Num - 1I))
  98.  
  99.                If LenCounter >= NumLen Then
  100.                    Exit For
  101.                End If
  102.  
  103.            Next Num
  104.  
  105.            If LenCounter < NumLen Then
  106.  
  107.                For RandomNum As Integer = 1I To (NumLen - LenCounter)
  108.  
  109.                    Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last)
  110.  
  111.                    Do Until Not Combo.Contains(n)
  112.                        n = Randomizer.Next(RandomValues.First, RandomValues.Last)
  113.                    Loop
  114.  
  115.                    Combo.Add(n)
  116.  
  117.                Next ' RandomNum
  118.  
  119.            End If ' LenCounter < NumLen
  120.  
  121. #If DEBUG Then ' #Debug
  122.            Debug.WriteLine(String.Join(", ", Combo))
  123.            ' Stop
  124. #End If
  125.            Combo.Sort()
  126.            Combos.Add(Combo)
  127.            IndexCounter += 1I
  128.            LenCounter = 0I
  129.  
  130.        Loop ' IndexCounter >= FixedValues.Last
  131.  
  132.        ' ******** ordenamiento-------------
  133.        '  Dim values As Integer() = (From n As Integer In Combos Order By n Ascending).ToArray
  134.  
  135.        ' ********
  136.        ' Listbox:
  137.        ' ********
  138.        Combos.ForEach(Sub(comb As List(Of Integer))
  139.  
  140.                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
  141.                           ListBox1.Items.Add(String.Join(", ",
  142.                                                          From value As String In comb
  143.                                                          Select If(value.Length = 1I,
  144.                                                                    value.Insert(0I, "0"c),
  145.                                                                    value)))
  146.                           ListBox1.Sorted = True
  147.  
  148.  
  149.  
  150.                       End Sub)
  151.  
  152.    End Sub
  153.  
  154.  
  155. End Class

Cosas a tener en cuenta:

1. No le asignes un nombre reservado a una propiedad (TextBox), y asignale el Type de retorno adecuado (no Object)

2. Intenta organizar ese código, es un desastre visual, métodos en medio de propiedades y luego más propiedades, constantes dentro de métodos, algoritmos largos dentro del bloque de un event-handler (aunque bueno, estu último lo añadi yo xD pero ya habia algo ahí de antes), un desastre.



Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 29 Agosto 2014, 02:07
Bueno ya me vas cojiendo la idea :) y gracias por tu paciencia jeje.

Bien seguimos con los problemas ,y tienes razón en el desorden, es que tengo una mala maña , como quiero que funcione de una no presto atencion al orden y esa es una de mis fallas ;(

Bien lo ejecuto y me da este error en :

No se puede convertir un objeto de tipo 'WhereSelectEnumerableIterator`2[System.Int32,System.Int32]' al tipo 'System.Int32[]'



Código
  1. Dim Rand As New Random
  2.        FixedValues =
  3.            (Result1.Concat(Result2).Concat(Result3)).
  4.            Distinct.
  5.            Select(Function(Value As Integer)
  6.                       Return If(Value < MAX, Value, Rand.Next(0, MAX))
  7.                   End Function)


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 29 Agosto 2014, 11:47
Código
  1.        FixedValues =
  2.            (Result1.Concat(Result2).Concat(Result3)).
  3.            Distinct.
  4.            Select(Function(Value As Integer)
  5.                       Return If(Value < MAX, Value, Rand.Next(0, MAX))
  6.                   End Function).ToArray

PD: esto ponlo fuera del sub
Citar
Código
  1.        Dim Rand As New Random


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 29 Agosto 2014, 12:10
Hola
Hice lo que me pones pero me sigue dando error,


   " no se controlo InvalidCastException "

No se puede convertir un objeto de tipo 'WhereSelectEnumerableIterator`2[System.Int32,System.Int32]' al tipo 'System.Int32[]'.



sugerencias " Cuando realiza la conversion de un numero,el valor debe ser un numero menor que intinito "
" asegurese que el tipo de origen se puede convertir en el tipo de destino"


SOLUCIONADO " Cada dia me pongo mas ciego y leo mal jejeje )


gracias Elektro

Luis





Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 29 Agosto 2014, 15:19
otro rollo jejej

Trasteando para aumentar los números ahora me encuentro este error cuando ejecuto el programa pero lo curioso es que con algunos numeros que introduzco no lo hace y variando estos números ( imput) si me sale el error ? si entiendo que se sale de la capacidad del la variable pero lo que no entiendo donde aumentar esta capacidad


 " Índice fuera de los límites de la matriz "



Código
  1. For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep
  2.  
  3.                LenCounter += 1I
  4.                Combo.Add(FixedValues(Num - 1I)) '<-------Índice fuera de los límites de la matriz.
  5.                If LenCounter >= NumLen Then
  6.                    Exit For
  7.                End If
  8.  
  9.            Next Num



Luis


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 29 Agosto 2014, 15:56
Los índices empiezan por Cero en .Net, así que debes descontarle un 1 a FixedValues.Count (no debes aumentar nada)

Código
  1. For Num As Integer = IndexCounter To (FixedValues.Count - 1I) Step NumStep

Supongo que eso debería solucionar el problema, quizás haya más cosas a tener en cuenta (IndexCounter, NumStep), pero de momento prueba lo que te dije a ver si te da el resultado que tu esperas.

Saludos!


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 29 Agosto 2014, 16:42
Sigue igual :(

sera porque la función que estoy empleando no tiene un largo especifico ? ya que como me da 50 números unas veces otras  también puede dar 80 o sea que los números a combinar nunca son del mismo largo o cantidades ..

Edito) me he dado cuenta que si colocoal principio en el imput números desde el 01 hasta el 09 me produce el error y a partir del numero 10 no lo hace ???

 " Índice fuera de los límites de la matriz "

Luis


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 29 Agosto 2014, 17:33
1) pon el código entero que estás usando

2) a la variable FixedValues asignale manualmente los numeros que tocan ( que no lo tenga q hacer yo porque no los se :-/ ) para probar el For.

3) pon el output que debería dar al menos las primeras 3 combinaciones para saber por donde corregir el problema...

saludos!


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 29 Agosto 2014, 18:09
Hola pongo el código entero, lo de poner los números en la variable es como difícil sin tener que cortar el código, que como veras hace una serie de cálculos con 20 dígitos que introduzco y saber cuantos números salen de esa ecuación es un poco difícil


Codigo

Código
  1. Public Class Form1
  2.    Dim maximum As Short = 99
  3.    Dim Número As Double
  4.    Private TextBoxes As TextBox() = {Nothing}
  5.    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32(), Result4 As Int32(), Result5 As Int32(), Result6 As Int32(), Result7 As Int32(), Result8 As Int32(), Result9 As Int32(), Result10 As Int32(), Result11 As Int32(), Result12 As Int32(), Result13 As Int32(), Result14 As Int32(), Result15 As Int32(), Result16 As Int32(), Result17 As Int32(), Result18 As Int32(), Result19 As Int32(), Result20 As Int32()
  6.    Private _textBox As Object
  7.    ReadOnly MAX As Integer = 99
  8.    Dim Rand As New Random
  9.    Dim Rand2 As New Random
  10.    Dim Result22 As Integer
  11.    Dim Counter, Counter2 As Integer
  12.    Dim myLabelArray(6) As Label
  13.    Dim x As Integer = 0
  14.    Private Property ListBox1Count As Integer
  15.    ReadOnly Randomizer As New Random
  16.    Dim Combo As List(Of Integer) = Nothing
  17.    Dim Combos As New List(Of List(Of Integer))
  18.    Dim FixedValues As Integer() = Nothing
  19.    ReadOnly RandomValues As Integer() =
  20.        Enumerable.Range(0, 99).ToArray
  21.  
  22.    Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
  23.        ' evitar letras
  24.        If Char.IsDigit(e.KeyChar) Then
  25.            e.Handled = False
  26.        ElseIf Char.IsControl(e.KeyChar) Then
  27.            e.Handled = False
  28.        ElseIf Char.IsSeparator(e.KeyChar) Then
  29.            e.Handled = False
  30.        Else
  31.            e.Handled = True
  32.        End If
  33.  
  34.    End Sub
  35.  
  36.    Private Property Calcular As Object
  37.  
  38.    Private Property TextBox(ByVal TextBoxCount As Short) As Object
  39.        Get
  40.            Return _textBox
  41.        End Get
  42.        Set(ByVal value As Object)
  43.            _textBox = value
  44.        End Set
  45.    End Property
  46.  
  47.    ReadOnly Property Num1 As Int32
  48.        Get
  49.            Return CInt(TextBox1.Text)
  50.        End Get
  51.    End Property
  52.    ReadOnly Property Num2 As Int32
  53.        Get
  54.            Return CInt(TextBox2.Text)
  55.        End Get
  56.    End Property
  57.    ReadOnly Property Num3 As Int32
  58.        Get
  59.            Return CInt(TextBox3.Text)
  60.        End Get
  61.    End Property
  62.    ReadOnly Property Num4 As Int32
  63.        Get
  64.            Return CInt(TextBox4.Text)
  65.        End Get
  66.    End Property
  67.  
  68.    ReadOnly Property Num5 As Int32
  69.        Get
  70.            Return CInt(TextBox5.Text)
  71.        End Get
  72.    End Property
  73.    '---------------------------------
  74.    ReadOnly Property Num6 As Int32
  75.        Get
  76.            Return CInt(TextBox6.Text)
  77.        End Get
  78.    End Property
  79.  
  80.    ReadOnly Property Num7 As Int32
  81.        Get
  82.            Return CInt(TextBox7.Text)
  83.        End Get
  84.    End Property
  85.    ReadOnly Property Num8 As Int32
  86.        Get
  87.            Return CInt(TextBox8.Text)
  88.        End Get
  89.    End Property
  90.    ReadOnly Property Num9 As Int32
  91.        Get
  92.            Return CInt(TextBox9.Text)
  93.        End Get
  94.    End Property
  95.    ReadOnly Property Num10 As Int32
  96.        Get
  97.            Return CInt(TextBox10.Text)
  98.        End Get
  99.    End Property
  100.    ReadOnly Property Num11 As Int32
  101.        Get
  102.            Return CInt(TextBox11.Text)
  103.        End Get
  104.    End Property
  105.    ReadOnly Property Num12 As Int32
  106.        Get
  107.            Return CInt(TextBox12.Text)
  108.        End Get
  109.    End Property
  110.    ReadOnly Property Num13 As Int32
  111.        Get
  112.            Return CInt(TextBox13.Text)
  113.        End Get
  114.    End Property
  115.    ReadOnly Property Num14 As Int32
  116.        Get
  117.            Return CInt(TextBox14.Text)
  118.        End Get
  119.    End Property
  120.    ReadOnly Property Num15 As Int32
  121.        Get
  122.            Return CInt(TextBox15.Text)
  123.        End Get
  124.    End Property
  125.  
  126.    ReadOnly Property Num16 As Int32
  127.        Get
  128.            Return CInt(TextBox16.Text)
  129.        End Get
  130.    End Property
  131.    ReadOnly Property Num17 As Int32
  132.        Get
  133.            Return CInt(TextBox17.Text)
  134.        End Get
  135.    End Property
  136.    ReadOnly Property Num18 As Int32
  137.        Get
  138.            Return CInt(TextBox18.Text)
  139.        End Get
  140.    End Property
  141.    ReadOnly Property Num19 As Int32
  142.        Get
  143.            Return CInt(TextBox19.Text)
  144.        End Get
  145.    End Property
  146.    ReadOnly Property Num20 As Int32
  147.        Get
  148.            Return CInt(TextBox20.Text)
  149.        End Get
  150.    End Property
  151.  
  152.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  153.        '--------------------------------------------------
  154.        Dim Result1 As Integer() = {Num1 - 1, Num1 - 2, Num1 - 3, Num1 + 1, Num1 + 2, Num1 + 3}
  155.  
  156.        For Index As Integer = 0 To (Result1.Count - 1)
  157.  
  158.            Select Case Result1(Index)
  159.  
  160.                Case Is = 0 ' El valor es 0. esto todavia no me funciona
  161.                    ' Hacer algo con el número 0 aquí. no mostrar el 0
  162.                    '   Result1(Index) = Not 0
  163.  
  164.                Case Is < 0 ' El valor es negativo.
  165.                    ' Lo convierto a positivo si funciona.
  166.                    Result1(Index) = Math.Abs(Result1(Index))
  167.  
  168.            End Select '/ Result1(Index)
  169.  
  170.  
  171.        Next Index
  172.  
  173.        Result1 = Result1.Distinct().ToArray
  174.        Array.Sort(Result1)
  175.  
  176.        '---------------------------------------------------
  177.  
  178.        Result2 = {Num2 + 1, Num2 + 2, Num2 + 3, Num2 - 1, Num2 - 2} _
  179.                  .Distinct().ToArray
  180.        Array.Sort(Result2)
  181.  
  182.        Result3 = {Num3 + 1, Num3 + 2, Num3 + 3, Num3 - 1, Num3 - 2, Num3 - 3} _
  183.                  .Distinct().ToArray
  184.        Array.Sort(Result3)
  185.  
  186.        Result4 = {Num4 + 1, Num4 + 2, Num4 + 3, Num4 - 1, Num4 - 2, Num4 - 3} _
  187.                  .Distinct().ToArray
  188.        Array.Sort(Result4)
  189.  
  190.        Result5 = {Num5 + 1, Num5 + 2, Num5 + 3, Num5 - 1, Num5 - 2, Num5 - 3} _
  191.                  .Distinct().ToArray
  192.        Array.Sort(Result5)
  193.  
  194.        Result6 = {Num6 + 1, Num6 + 2, Num6 + 3, Num6 - 1, Num6 - 2, Num6 - 3} _
  195.                  .Distinct().ToArray
  196.  
  197.        Array.Sort(Result6)
  198.  
  199.        Result7 = {Num7 + 1, Num7 + 2, Num7 + 3, Num7 - 1, Num7 - 2, Num7 - 3} _
  200.                  .Distinct().ToArray
  201.  
  202.        Array.Sort(Result7)
  203.  
  204.        Result8 = {Num8 + 1, Num8 + 2, Num8 + 3, Num8 - 1, Num8 - 2, Num8 - 3} _
  205.                  .Distinct().ToArray
  206.        Array.Sort(Result8)
  207.  
  208.        Result9 = {Num9 + 1, Num9 + 2, Num9 + 3, Num9 - 1, Num9 - 2, Num9 - 3} _
  209.                  .Distinct().ToArray
  210.        Array.Sort(Result9)
  211.  
  212.        Result10 = {Num10 + 1, Num10 + 2, Num10 - 1, Num10 - 2, Num10 - 3} _
  213.                  .Distinct().ToArray
  214.        Array.Sort(Result10)
  215.  
  216.        Result11 = {Num11 + 1, Num11 + 2, Num11 + 3, Num11 - 1, Num11 - 2, Num11 - 3} _
  217.                  .Distinct().ToArray
  218.        Array.Sort(Result11)
  219.  
  220.        Result12 = {Num12 + 1, Num12 + 2, Num12 + 3, Num12 - 1, Num12 - 2, Num12 - 3} _
  221.                  .Distinct().ToArray
  222.        Array.Sort(Result12)
  223.  
  224.        Result13 = {Num13 + 1, Num13 + 2, Num13 + 3, Num13 - 1, Num13 - 2, Num13 - 3} _
  225.                  .Distinct().ToArray
  226.        Array.Sort(Result13)
  227.  
  228.        Result14 = {Num14 + 1, Num14 + 2, Num14 + 3, Num14 - 1, Num14 - 2, Num14 - 3} _
  229.                  .Distinct().ToArray
  230.        Array.Sort(Result14)
  231.  
  232.        Result15 = {Num15 + 1, Num15 + 2, Num15 + 3, Num15 - 1, Num15 - 2, Num15 - 3} _
  233.                  .Distinct().ToArray
  234.        Array.Sort(Result15)
  235.  
  236.        Result16 = {Num16 + 1, Num16 + 2, Num16 + 3, Num16 - 1, Num16 - 2, Num16 - 3} _
  237.                  .Distinct().ToArray
  238.        Array.Sort(Result16)
  239.  
  240.        Result17 = {Num17 + 1, Num17 + 2, Num17 + 3, Num17 - 1, Num17 - 2, Num17 - 3} _
  241.                  .Distinct().ToArray
  242.        Array.Sort(Result17)
  243.  
  244.        Result18 = {Num18 + 1, Num18 + 2, Num18 + 3, Num18 - 1, Num18 - 2, Num18 - 3} _
  245.                  .Distinct().ToArray
  246.        Array.Sort(Result18)
  247.  
  248.        Result19 = {Num19 + 1, Num19 + 2, Num19 + 3, Num19 - 1, Num19 - 2, Num19 - 3} _
  249.                  .Distinct().ToArray
  250.  
  251.        Array.Sort(Result19)
  252.        Result20 = {Num20 + 1, Num20 + 2, Num20 + 3, Num20 - 1, Num20 - 2, Num20 - 3} _
  253.                  .Distinct().ToArray
  254.  
  255.        Array.Sort(Result20)
  256.        ' Elimino duplicados al mismo tiempo que selecciono los números inferiores a MAX.
  257.        Dim Resultss As IEnumerable(Of Integer) =
  258.            (
  259.                From Value As Integer
  260.                In (Result1.Concat(Result2).Concat(Result3).Concat(Result4).Concat(Result5).Concat(Result6).Concat(Result7).Concat(Result8).Concat(Result9).Concat(Result10).Concat(Result11).Concat(Result12).Concat(Result13).Concat(Result14).Concat(Result15).Concat(Result16).Concat(Result17).Concat(Result18).Concat(Result19).Concat(Result20)).Distinct
  261.                Where Value <= MAX
  262.            )
  263.  
  264.        ListBox2.Items.AddRange(Resultss.Cast(Of Object).ToArray)
  265.  
  266.        'funcion unir combis
  267.        FixedValues =
  268.             ((Result1.Concat(Result2).Concat(Result3).Concat(Result4).Concat(Result5).Concat(Result6).Concat(Result7).Concat(Result8).Concat(Result9).Concat(Result10).Concat(Result11).Concat(Result12).Concat(Result13).Concat(Result14).Concat(Result15).Concat(Result16).Concat(Result17).Concat(Result18).Concat(Result19).Concat(Result20)).Distinct).
  269.             Distinct.
  270.             Select(Function(Value As Integer)
  271.                        Return If(Value < MAX, Value, Rand.Next(0, MAX))
  272.                    End Function).ToArray
  273.  
  274.        Dim IndexCounter As Integer = FixedValues.First ' 1
  275.        Dim LenCounter As Integer = 0I
  276.  
  277.        Const NumStep As Integer = 3I
  278.        Const NumLen As Integer = 10I
  279.  
  280.        Do Until IndexCounter > FixedValues.Last
  281.  
  282.            Combo = New List(Of Integer)
  283.  
  284.  
  285.            For Num As Integer = IndexCounter To (FixedValues.Count - 1I) Step NumStep
  286.  
  287.                LenCounter += 1I
  288.                Combo.Add(FixedValues(Num - 1I)) 'matrix fuersa
  289.  
  290.                If LenCounter >= NumLen Then
  291.                    Exit For
  292.                End If
  293.  
  294.            Next Num
  295.  
  296.            If LenCounter < NumLen Then
  297.  
  298.                For RandomNum As Integer = 1I To (NumLen - LenCounter)
  299.  
  300.                    Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last)
  301.  
  302.                    Do Until Not Combo.Contains(n)
  303.                        n = Randomizer.Next(RandomValues.First, RandomValues.Last)
  304.                    Loop
  305.  
  306.                    Combo.Add(n)
  307.  
  308.                Next ' RandomNum
  309.  
  310.            End If ' LenCounter < NumLen
  311.  
  312. #If DEBUG Then ' #Debug
  313.            Debug.WriteLine(String.Join(", ", Combo))
  314.            ' Stop
  315. #End If
  316.            Combo.Sort()
  317.            Combos.Add(Combo)
  318.            IndexCounter += 1I
  319.            LenCounter = 0I
  320.  
  321.        Loop ' IndexCounter >= FixedValues.Last
  322.  
  323.        ' ******** ordenamiento-------------
  324.        '  Dim values As Integer() = (From n As Integer In Combos Order By n Ascending).ToArray
  325.  
  326.        ' ********
  327.        ' Listbox:
  328.        ' ********
  329.        Combos.ForEach(Sub(comb As List(Of Integer))
  330.  
  331.                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
  332.                           ListBox1.Items.Add(String.Join(", ",
  333.                                                          From value As String In comb
  334.                                                          Select If(value.Length = 1I,
  335.                                                                    value.Insert(0I, "0"c),
  336.                                                                    value)))
  337.                           ListBox1.Sorted = True
  338.  
  339.  
  340.  
  341.                       End Sub)
  342.  
  343.    End Sub
  344.  
  345.  
  346.        ' Application.Exit()
  347.  
  348.    Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
  349.        sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "")
  350.  
  351.    End Sub
  352.  
  353.    Private Sub TextBox3_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
  354.        sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "")
  355.    End Sub
  356.  
  357.    Private Sub TextBox4_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
  358.        sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "")
  359.    End Sub
  360.  
  361.    Private Sub TextBox5_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
  362.        sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "")
  363.    End Sub
  364.  
  365.    Private Sub TextBox2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
  366.        sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "")
  367.    End Sub
  368.  
  369.  
  370.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  371.  
  372.    End Sub
  373.  
  374.    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
  375.        solonumeros(e)
  376.        If e.KeyChar = ChrW(Keys.Enter) Then
  377.            e.Handled = True
  378.            SendKeys.Send("{TAB}")
  379.        End If
  380.    End Sub
  381.  
  382.    Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
  383.        solonumeros(e)
  384.        If e.KeyChar = ChrW(Keys.Enter) Then
  385.            e.Handled = True
  386.            SendKeys.Send("{TAB}")
  387.        End If
  388.    End Sub
  389.  
  390.    Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress
  391.        solonumeros(e)
  392.        If e.KeyChar = ChrW(Keys.Enter) Then
  393.            e.Handled = True
  394.            SendKeys.Send("{TAB}")
  395.        End If
  396.    End Sub
  397.  
  398.    Private Sub TextBox4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress
  399.        solonumeros(e)
  400.        If e.KeyChar = ChrW(Keys.Enter) Then
  401.            e.Handled = True
  402.            SendKeys.Send("{TAB}")
  403.        End If
  404.    End Sub
  405.  
  406.    Private Sub TextBox5_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox5.KeyPress
  407.        solonumeros(e)
  408.        If e.KeyChar = ChrW(Keys.Enter) Then
  409.            e.Handled = True
  410.            SendKeys.Send("{TAB}")
  411.        End If
  412.    End Sub
  413.    Private Sub TextBox6_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress
  414.        solonumeros(e)
  415.        If e.KeyChar = ChrW(Keys.Enter) Then
  416.            e.Handled = True
  417.            SendKeys.Send("{TAB}")
  418.  
  419.        End If
  420.  
  421.    End Sub
  422.    Private Sub TextBox7_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox7.KeyPress
  423.        solonumeros(e)
  424.        If e.KeyChar = ChrW(Keys.Enter) Then
  425.            e.Handled = True
  426.            SendKeys.Send("{TAB}")
  427.  
  428.        End If
  429.  
  430.    End Sub
  431.  
  432.    Private Sub TextBox8_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox8.KeyPress
  433.        solonumeros(e)
  434.        If e.KeyChar = ChrW(Keys.Enter) Then
  435.            e.Handled = True
  436.            SendKeys.Send("{TAB}")
  437.  
  438.        End If
  439.  
  440.    End Sub
  441.  
  442.    Private Sub TextBox9_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox9.KeyPress
  443.        solonumeros(e)
  444.        If e.KeyChar = ChrW(Keys.Enter) Then
  445.            e.Handled = True
  446.            SendKeys.Send("{TAB}")
  447.  
  448.        End If
  449.  
  450.    End Sub
  451.    Private Sub TextBox10_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox10.KeyPress
  452.        solonumeros(e)
  453.        If e.KeyChar = ChrW(Keys.Enter) Then
  454.            e.Handled = True
  455.            SendKeys.Send("{TAB}")
  456.  
  457.        End If
  458.  
  459.    End Sub
  460.  
  461.    Private Sub TextBox11_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox11.KeyPress
  462.        solonumeros(e)
  463.        If e.KeyChar = ChrW(Keys.Enter) Then
  464.            e.Handled = True
  465.            SendKeys.Send("{TAB}")
  466.  
  467.        End If
  468.  
  469.    End Sub
  470.    Private Sub TextBox12_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox12.KeyPress
  471.        solonumeros(e)
  472.        If e.KeyChar = ChrW(Keys.Enter) Then
  473.            e.Handled = True
  474.            SendKeys.Send("{TAB}")
  475.  
  476.        End If
  477.  
  478.    End Sub
  479.    Private Sub TextBox13_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox13.KeyPress
  480.        solonumeros(e)
  481.        If e.KeyChar = ChrW(Keys.Enter) Then
  482.            e.Handled = True
  483.            SendKeys.Send("{TAB}")
  484.  
  485.        End If
  486.  
  487.    End Sub
  488.    Private Sub TextBox14_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox14.KeyPress
  489.        solonumeros(e)
  490.        If e.KeyChar = ChrW(Keys.Enter) Then
  491.            e.Handled = True
  492.            SendKeys.Send("{TAB}")
  493.  
  494.        End If
  495.  
  496.    End Sub
  497.    Private Sub TextBox15_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox15.KeyPress
  498.        solonumeros(e)
  499.        If e.KeyChar = ChrW(Keys.Enter) Then
  500.            e.Handled = True
  501.            SendKeys.Send("{TAB}")
  502.  
  503.        End If
  504.  
  505.    End Sub
  506.    Private Sub TextBox16_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox16.KeyPress
  507.        solonumeros(e)
  508.        If e.KeyChar = ChrW(Keys.Enter) Then
  509.            e.Handled = True
  510.            SendKeys.Send("{TAB}")
  511.  
  512.        End If
  513.  
  514.    End Sub
  515.    Private Sub TextBox17_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox17.KeyPress
  516.        solonumeros(e)
  517.        If e.KeyChar = ChrW(Keys.Enter) Then
  518.            e.Handled = True
  519.            SendKeys.Send("{TAB}")
  520.  
  521.        End If
  522.  
  523.    End Sub
  524.    Private Sub TextBox18_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox18.KeyPress
  525.        solonumeros(e)
  526.        If e.KeyChar = ChrW(Keys.Enter) Then
  527.            e.Handled = True
  528.            SendKeys.Send("{TAB}")
  529.  
  530.        End If
  531.  
  532.    End Sub
  533.    Private Sub TextBox19_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox19.KeyPress
  534.        solonumeros(e)
  535.        If e.KeyChar = ChrW(Keys.Enter) Then
  536.            e.Handled = True
  537.            SendKeys.Send("{TAB}")
  538.  
  539.        End If
  540.  
  541.    End Sub
  542.    Private Sub TextBox20_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox20.KeyPress
  543.        solonumeros(e)
  544.        If e.KeyChar = ChrW(Keys.Enter) Then
  545.            e.Handled = True
  546.            SendKeys.Send("{TAB}")
  547.  
  548.        End If
  549.  
  550.    End Sub
  551.  
  552.    Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  553.        For Each obj As Control In Me.Controls
  554.            If (TypeOf obj Is TextBox) Then
  555.                obj.Text = ""
  556.            End If
  557.            If (TypeOf obj Is GroupBox) Then
  558.                For Each caja As Control In obj.Controls
  559.                    If (TypeOf caja Is TextBox) Then
  560.                        caja.Text = ""
  561.                    End If
  562.                Next
  563.            End If
  564.            ListBox1.Items.Clear()
  565.  
  566.  
  567.        Next
  568.    End Sub
  569.  
  570. End Class
  571.  
  572.  
  573.  
  574.  




Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 29 Agosto 2014, 18:16
Hola pongo el código entero, lo de poner los números en la variable es como difícil sin tener que cortar el código, que como veras hace una serie de cálculos con 20 dígitos que introduzco y saber cuantos números salen de esa ecuación es un poco difícil

ya, el programa hace el cálculo, ¿pero para que pueda buscar el error no puedes ponerme algo así?:

Código:
Dim fixedvalues as integer() = {1,2,3 etc,...}

Si no no se con que números debería probar en el for...

cuando pueda le echo un ojo

saludos


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 29 Agosto 2014, 18:56
Con esta secuencia de numeros me da el error


Código
  1. Dim fixedvalues as integer() = {02, 03, 11, 12, 16, 18, 25, 27, 28, 31,40, 41, 43, 52, 53, 56, 57, 70, 77, 80}  

Luis



[ELEKTRO]: Mañana lo miro con calma luis, lo siento si te hice esperar


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 30 Agosto 2014, 20:16
He probado el For con la secuencia que dijiste y no me da ningún error de tipo " Índice fuera de los límites de la matriz ", así que no le hice ninguna modificación al código, está todo correcto en este código? (fixedvalues, numstep, numlen, IndexCounter):

Código
  1. Public Class Form1
  2.  
  3.    ReadOnly Randomizer As New Random
  4.  
  5.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Shown
  6.  
  7.        Dim Combo As List(Of Integer) = Nothing
  8.        Dim Combos As New List(Of List(Of Integer))
  9.  
  10.        Dim fixedvalues As Integer() = {2, 3, 11, 12, 16, 18, 25, 27, 28, 31, 40, 41, 43, 52, 53, 56, 57, 70, 77, 80}
  11.        Dim RandomValues As Integer() = Enumerable.Range(0, 99).ToArray
  12.  
  13.        Dim IndexCounter As Integer = fixedvalues.First ' 1
  14.        Dim LenCounter As Integer = 0I
  15.  
  16.        Const NumStep As Integer = 3I
  17.        Const NumLen As Integer = 10I
  18.  
  19.        Do Until IndexCounter > fixedvalues.Last
  20.  
  21.            Combo = New List(Of Integer)
  22.  
  23.            For Num As Integer = IndexCounter To (fixedvalues.Count - 1I) Step NumStep
  24.  
  25.                LenCounter += 1I
  26.                Combo.Add(fixedvalues(Num - 1I)) 'matrix fuersa
  27.  
  28.                If LenCounter >= NumLen Then
  29.                    Exit For
  30.                End If
  31.  
  32.            Next Num
  33.  
  34.            If LenCounter < NumLen Then
  35.  
  36.                For RandomNum As Integer = 1I To (NumLen - LenCounter)
  37.  
  38.                    Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last)
  39.  
  40.                    Do Until Not Combo.Contains(n)
  41.                        n = Randomizer.Next(RandomValues.First, RandomValues.Last)
  42.                    Loop
  43.  
  44.                    Combo.Add(n)
  45.  
  46.                Next ' RandomNum
  47.  
  48.            End If ' LenCounter < NumLen
  49.  
  50.            Combo.Sort()
  51.            Combos.Add(Combo)
  52.            IndexCounter += 1I
  53.            LenCounter = 0I
  54.  
  55.        Loop ' IndexCounter >= FixedValues.Last
  56.  
  57.        Combos.ForEach(Sub(comb As List(Of Integer))
  58.  
  59.                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
  60.                           ListBox1.Items.Add(String.Join(", ",
  61.                                                          From value As String In comb
  62.                                                          Select If(value.Length = 1I,
  63.                                                                    value.Insert(0I, "0"c),
  64.                                                                    value)))
  65.                           ListBox1.Sorted = True
  66.  
  67.  
  68.  
  69.                       End Sub)
  70.  
  71.    End Sub
  72.  
  73. End Class

saludos


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 30 Agosto 2014, 21:40
 :-X :-X :-X :-X :-X :-X :rolleyes: :rolleyes: :rolleyes: :rolleyes:

Vere que pasa sera otra cosa

gracias

Luis


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 1 Septiembre 2014, 17:44
Bien lo he probado repasado y parece que ya el error no me lo hace realmente no se como se arreglo jejej,lo que hice fue hacer un nuevo proyecto lo renombre y ahora va bien salvo jjejjj siempre hay un pero,

Como hago para que en las  combinaciones no me salga 00

00 10 25 35 48 49 50 51 70 72 90
00 15 25 38 45 48 49 52 56 70 88

Saludos
Luis


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 1 Septiembre 2014, 19:39
Como hago para que en las  combinaciones no me salga 00

Código
  1.        Combos.ForEach(Sub(comb As List(Of Integer))
  2.  
  3.                          ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
  4.                          ListBox1.Items.Add(String.Join(", ",
  5.                                                         From value As String In comb
  6.                                                         Select If(value.Length = 1I,
  7.                                                                   value.Insert(0I, "0"c),
  8.                                                                   value)))
  9.                          ListBox1.Sorted = True
  10.  
  11.  
  12.  
  13.                      End Sub)

Supongo que te refieres a poner "0" y no "00", entonces:

Código
  1.        Combos.ForEach(Sub(comb As List(Of Integer))
  2.  
  3.                          ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
  4.                          ListBox1.Items.Add(String.Join(", ",
  5.                                                         From value As String In comb
  6.                                                         Select If(value.Length = 1I andalso not value.equals("0"),
  7.                                                                   value.Insert(0I, "0"c),
  8.                                                                   value)))
  9.                          ListBox1.Sorted = True
  10.  
  11.  
  12.  
  13.                      End Sub)


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 2 Septiembre 2014, 07:55
Hola

 " Supongo que te refieres a poner "0" y no "00", entonces: "

No me refiero a que no muestre combinaciones que tengan 00 o  0

Luis


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 2 Septiembre 2014, 15:34
¿y entonces que quieres mostrar en su lugar?, no soy adivino, luis.

pero de todas formas creo que eso ya puedes hacerlo tu solito

saludos!


Título: Re: Mis malas combinaciones :(
Publicado por: luis456 en 2 Septiembre 2014, 22:29
Pos no mostrar combinaciones con 00 o 0 eliminarlas .pero ya estoy en ello claro hasta el fin de semana que viene ya estoy currando de nuevo jej


Gracias por tu ayuda pero seguro este sábado andaré por aca jejej


Luis


Título: Re: Mis malas combinaciones :(
Publicado por: Eleкtro en 3 Septiembre 2014, 00:24
pues excluye el 0 al crear la combinación, tan facil como eso, tienes una mezcla de 20 códigos que se te han ido proporcionando para hacer todo lo que deseas, creo que ya es suficiente, preguntar "¿como hago para que no salga un 00?" a estas alturas... fíjate en el código que tienes y aprende a usarlo.

Saludos!