Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - luis456

#321
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 (vbnet) [Seleccionar]
Imports System.IO
Public Class Form1

    Dim maximum As Short = 99
    Dim x As Integer = 0
    Dim Número As Double
    Private TextBoxes As TextBox() = {Nothing}
    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
    Private _textBox As Object
    Private Property ListBox1Count As Integer
    ReadOnly MAX As Integer = 99
    ReadOnly Randomizer As New Random
    Dim Combo As List(Of Integer) = Nothing
    Dim Combos As New List(Of List(Of Integer))

    ReadOnly FixedValues As Integer() = {1, 5, 10, 15, 20, 25, 30, 33, 35, 38, 40, 45, 48}
    ReadOnly RandomValues As Integer() =
        Enumerable.Range(FixedValues.First, FixedValues.Last).ToArray ' 1 to 30


    Private Property Calcular As Object

    Private Property TextBox(ByVal TextBoxCount As Short) As Object
        Get
            Return _textBox
        End Get
        Set(ByVal value As Object)
            _textBox = value
        End Set
    End Property

    Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
        ' evitar letras
        If Char.IsDigit(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsControl(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsSeparator(e.KeyChar) Then
            e.Handled = False
        Else
            e.Handled = True
        End If

    End Sub


    ReadOnly Property Num1 As Int32
        Get
            Return CInt(TextBox1.Text)
        End Get
    End Property

    ReadOnly Property Num2 As Int32
        Get
            Return CInt(TextBox2.Text)
        End Get
    End Property
    ReadOnly Property Num3 As Int32
        Get
            Return CInt(TextBox3.Text)
        End Get
    End Property


    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click


        Result1 = {Num1 + 1, Num1 + 2, Num1 + 4, Num1 + 6, Num1 - 4, Num1 - 1} _
                  .Distinct().ToArray ' Elimino duplicados

        Result2 = {Num2 + 1, Num2 + 2, Num2 + 3, Num2 - 1, Num2 - 2, Num1 - 3} _
                  .Distinct().ToArray ' Elimino duplicados

        Result3 = {Num3 - 1, Num3 - 2, Num3 - 3, Num3 + 2, Num3 + 3, Num3 + 5} _
                  .Distinct().ToArray ' Elimino duplicados


        Dim Rand As New Random
        ' Concateno, y...
        ' Elimino duplicados, y...
        ' Selecciono los números inferiores a MAX, y...
        ' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX.
        Dim Result As IEnumerable(Of Integer) =
            (Result1.Concat(Result2).Concat(Result3)).
            Distinct.
            Select(Function(Value As Integer)
                       Return If(Value < MAX, Value, Rand.Next(0, MAX))
                   End Function)
        ListBox1.Items.AddRange(Result.Cast(Of Object).ToArray)
        ' ******** ------------------------------------------------------------------


        ' Num ReadOnly FixedValues As Integer() =
        ' Num   Enumerable.Range(1I, 49I).ToArray ' 1 to 30

    End Sub
    Private Sub Test() Handles MyBase.Shown

        Dim IndexCounter As Integer = FixedValues.First ' 1
        Dim LenCounter As Integer = 0I

        Const NumStep As Integer = 5I
        Const NumLen As Integer = 6I

        Do Until IndexCounter > FixedValues.Last ' IndexCounter > 30

            Combo = New List(Of Integer)

            For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep

                LenCounter += 1I
                Combo.Add(FixedValues(Num - 1I))

                If LenCounter >= NumLen Then
                    Exit For
                End If

            Next Num



            If LenCounter < NumLen Then ' If LenCounter < 10

                For RandomNum As Integer = 1I To (NumLen - LenCounter)

                    Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last)

                    Do Until Not Combo.Contains(n)
                        n = Randomizer.Next(RandomValues.First, RandomValues.Last)
                    Loop

                    Combo.Add(n)

                Next ' RandomNum

            End If ' LenCounter < NumLen

#If DEBUG Then ' #Debug
            Debug.WriteLine(String.Join(", ", Combo))
            ' Stop
#End If
            Combo.Sort()
            Combos.Add(Combo)
            IndexCounter += 1I
            LenCounter = 0I

        Loop ' IndexCounter >= FixedValues.Last

        ' ******** ordenamiento-------------
        '  Dim values As Integer() = (From n As Integer In Combos Order By n Ascending).ToArray

        ' ********
        ' Listbox:
        ' ********
        Combos.ForEach(Sub(comb As List(Of Integer))

                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
                           ListBox1.Items.Add(String.Join(", ",
                                                          From value As String In comb
                                                          Select If(value.Length = 1I,
                                                                    value.Insert(0I, "0"c),
                                                                    value)))
                           ListBox1.Sorted = True



                       End Sub)
    End Sub ' Test
   
End Class
#322
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 (vbnet) [Seleccionar]
Public Class Form1

    Dim maximum As Short = 99
    Dim x As Integer = 0
    Dim Número As Double
    Private TextBoxes As TextBox() = {Nothing}
    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
    Private _textBox As Object
    Private Property ListBox1Count As Integer
    ReadOnly MAX As Integer = 99

   

    Private Property Calcular As Object

    Private Property TextBox(ByVal TextBoxCount As Short) As Object
        Get
            Return _textBox
        End Get
        Set(ByVal value As Object)
            _textBox = value
        End Set
    End Property

    Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
        ' evitar letras
        If Char.IsDigit(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsControl(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsSeparator(e.KeyChar) Then
            e.Handled = False
        Else
            e.Handled = True
        End If

    End Sub


    ReadOnly Property Num1 As Int32
        Get
            Return CInt(TextBox1.Text)
        End Get
    End Property

    ReadOnly Property Num2 As Int32
        Get
            Return CInt(TextBox2.Text)
        End Get
    End Property
    ReadOnly Property Num3 As Int32
        Get
            Return CInt(TextBox3.Text)
        End Get
    End Property


    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click


        Result1 = {Num1 + 1, Num1 + 2, Num1 + 4, Num1 + 6, Num1 - 4, Num1 - 1} _
                  .Distinct().ToArray ' Elimino duplicados

        Result2 = {Num2 + 1, Num2 + 2, Num2 + 3, Num2 - 1, Num2 - 2, Num1 - 3} _
                  .Distinct().ToArray ' Elimino duplicados

        Result3 = {Num3 - 1, Num3 - 2, Num3 - 3, Num3 + 2, Num3 + 3, Num3 + 5} _
                  .Distinct().ToArray ' Elimino duplicados


        Dim Rand As New Random
        ' Concateno, y...
        ' Elimino duplicados, y...
        ' Selecciono los números inferiores a MAX, y...
        ' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX.
        Dim Result As IEnumerable(Of Integer) =
            (Result1.Concat(Result2).Concat(Result3)).
            Distinct.
            Select(Function(Value As Integer)
                       Return If(Value < MAX, Value, Rand.Next(0, MAX))
                   End Function)
        ListBox1.Items.AddRange(Result.Cast(Of Object).ToArray)
    End Sub
End Class




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 (vbnet) [Seleccionar]
Imports System.IO

Public Class LuisClass_v2

    ReadOnly Randomizer As New Random

    ' Num ReadOnly FixedValues As Integer() =
    ' Num   Enumerable.Range(1I, 49I).ToArray ' 1 to 30

    ReadOnly FixedValues As Integer() = {1, 5, 10, 15, 20, 25, 30, 33, 35, 38, 40, 45, 48}

    ReadOnly RandomValues As Integer() =
        Enumerable.Range(FixedValues.First, FixedValues.Last).ToArray ' 1 to 30

    Dim Combo As List(Of Integer) = Nothing
    Dim Combos As New List(Of List(Of Integer))

    Private Sub Test() Handles MyBase.Shown

        Dim IndexCounter As Integer = FixedValues.First ' 1
        Dim LenCounter As Integer = 0I

        Const NumStep As Integer = 5I
        Const NumLen As Integer = 6I

        Do Until IndexCounter > FixedValues.Last ' IndexCounter > 30

            Combo = New List(Of Integer)

            For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep

                LenCounter += 1I
                Combo.Add(FixedValues(Num - 1I))

                If LenCounter >= NumLen Then
                    Exit For
                End If

            Next Num



            If LenCounter < NumLen Then ' If LenCounter < 10

                For RandomNum As Integer = 1I To (NumLen - LenCounter)

                    Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last)

                    Do Until Not Combo.Contains(n)
                        n = Randomizer.Next(RandomValues.First, RandomValues.Last)
                    Loop

                    Combo.Add(n)

                Next ' RandomNum

            End If ' LenCounter < NumLen

#If DEBUG Then ' #Debug
            Debug.WriteLine(String.Join(", ", Combo))
            ' Stop
#End If
            Combo.Sort()
            Combos.Add(Combo)
            IndexCounter += 1I
            LenCounter = 0I

        Loop ' IndexCounter >= FixedValues.Last

        ' ******** ordenamiento-------------
        '  Dim values As Integer() = (From n As Integer In Combos Order By n Ascending).ToArray

        ' ********
        ' Listbox:
        ' ********
        Combos.ForEach(Sub(comb As List(Of Integer))

                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
                           ListBox1.Items.Add(String.Join(", ",
                                                          From value As String In comb
                                                          Select If(value.Length = 1I,
                                                                    value.Insert(0I, "0"c),
                                                                    value)))
                           ListBox1.Sorted = True



                       End Sub)
    End Sub ' Test



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim rutaFichero As String
        Dim i As Integer

        rutaFichero = Path.Combine(Application.StartupPath, "contenido_listbox.txt")
        Dim fichero As New IO.StreamWriter(rutaFichero)
        For i = 0 To ListBox1.Items.Count - 1
            fichero.WriteLine(ListBox1.Items(i))
        Next
        fichero.Close()
    End Sub
    ' contar que no ay repetidos

    Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click

        Label1.Text = CStr(ListBox1.Items.Count)

        Dim query = From item As String In ListBox1.Items.Cast(Of String)() _
                    Order By item _
                    Group By item = item _
                    Into Total = Group, Count() _
                    Select Total

        Dim msg As New System.Text.StringBuilder()

        For Each item In query
            msg.AppendLine(String.Format("Combinaciones {0} existen {1}", item(0), item.Count))
        Next

        MessageBox.Show(msg.ToString())

    End Sub

   
End Class



Gracias por tu paciencia

Luis






#323
Solucionado ;)

Código (vbnet) [Seleccionar]
Label1.Text = CStr(ListBox1.Items.Count)


luis
#324
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 (vbnet) [Seleccionar]
' contar que no ay repetidos

    Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click

        Dim query = From item As String In ListBox1.Items.Cast(Of String)() _
                    Order By item _
                    Group By item = item _
                    Into Total = Group, Count() _
                    Select Total

        Dim msg As New System.Text.StringBuilder()

        For Each item In query
            msg.AppendLine(String.Format("Combinaciones {0} existen {1}", item(0), item.Count))
        Next

        MessageBox.Show(msg.ToString())

    End Sub
#325
Listo :)    funciona como quería

Muchas gracias elektro

Luis

( nos levantamos pronto ee)
#326
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



#327
No me sale y nada significa que no me ordena las combinaciones

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

    ReadOnly Randomizer As New Random

    ' Num ReadOnly FixedValues As Integer() =
    ' Num   Enumerable.Range(1I, 49I).ToArray ' 1 to 30

    ReadOnly FixedValues As Integer() = {1, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50}

    ReadOnly RandomValues As Integer() =
        Enumerable.Range(FixedValues.First, FixedValues.Last).ToArray ' 1 to 30

    Dim Combo As List(Of Integer) = Nothing
    Dim Combos As New List(Of List(Of Integer))

    Private Sub Test() Handles MyBase.Shown

        Dim IndexCounter As Integer = FixedValues.First ' 1
        Dim LenCounter As Integer = 0I

        Const NumStep As Integer = 3I
        Const NumLen As Integer = 10I

        Do Until IndexCounter > FixedValues.Last ' IndexCounter > 30

            Combo = New List(Of Integer)

            For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep

                LenCounter += 1I
                Combo.Add(FixedValues(Num - 1I))

                If LenCounter >= NumLen Then
                    Exit For
                End If

            Next Num



            If LenCounter < NumLen Then ' If LenCounter < 10

                For RandomNum As Integer = 1I To (NumLen - LenCounter)

                    Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last)

                    Do Until Not Combo.Contains(n)
                        n = Randomizer.Next(RandomValues.First, RandomValues.Last)
                    Loop

                    Combo.Add(n)

                Next ' RandomNum

            End If ' LenCounter < NumLen

#If DEBUG Then ' #Debug
            Debug.WriteLine(String.Join(", ", Combo))
            ' Stop
#End If

            Combos.Add(Combo)
            IndexCounter += 1I
            LenCounter = 0I

        Loop ' IndexCounter >= FixedValues.Last

        ' ******** ordenamiento-------------
        '  Dim values As Integer() = (From n As Integer In Combos Order By n Ascending).ToArray

        ' ********
        ' Listbox:
        ' ********
        Combos.ForEach(Sub(comb As List(Of Integer))

                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
                           ListBox1.Items.Add(String.Join(", ",
                                                          From value As String In comb
                                                          Select If(value.Length = 1I,
                                                                    value.Insert(0I, "0"c),
                                                                    value)))
                           ListBox1.Sorted = True

                       End Sub)
    End Sub ' Test

End Class
#328
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 (vbnet) [Seleccionar]
Combos.ForEach(Sub(comb As List(Of Integer))

                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
                           ListBox1.Items.Add(String.Join(", ",
                                                          From value As String In comb
                                                          Select If(value.Length = 1I,
                                                                    value.Insert(0I, "0"c),
                                                                    value)))
                           ListBox1.Sorted = True

                       End Sub)
#329
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 (vbnet) [Seleccionar]
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
#330
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 (vbnet) [Seleccionar]
' ******** ordenamiento-------------
        Dim values As Integer() = (From n As Integer In Combos Order By n Ascending).ToArray

        ' ********
        ' Listbox:
        ' ********
        Combos.ForEach(Sub(comb As List(Of Integer))

                           ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox.
                           ListBox1.Items.Add(String.Join(", ",
                                                          From value As String In comb
                                                          Select If(value.Length = 1I,
                                                                    value.Insert(0I, "0"c),
                                                                    value)))

                       End Sub)

    End Sub ' Test




saludos
Luis