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

#371
Cita de: Eleкtro en  6 Febrero 2014, 20:31 PM
Fíjate bien en los cambios, esto puedes hacerlo sin ayuda

Código (vbnet,3,8) [Seleccionar]
For X As Integer = 0 To Elementos.Count - 1 Step 4

    ListBox1.Items.Add(
        String.Format("{0} {1} {2} {3}",
                      Elementos(X),
                      If(Not (X + 1) >= Elementos.Count, Elementos(X + 1), String.Empty),
                      If(Not (X + 2) >= Elementos.Count, Elementos(X + 2), String.Empty),
                      If(Not (X + 3) >= Elementos.Count, Elementos(X + 3), String.Empty)))

Next X


Saludos!

Chupado  ;-)  gracias electro a este paso podre decir que estoy con el mejor maestro :)  ahora vere como saltar las combinaciones para que no sean seguidas pero lo tratare de hacer  yo mismo.rompiendo se aprende :)

Luis



#372
Bueno después de trastear  con este código de elektro logre adaptarlo a mi nuevo proyecto y funciona pero tengo ahora esta pega.

como muestro en ves de un mesaggebox los resultados en un listbox ? ya que trato con  " ListBox1.Items.AddRange(Result1.Cast(Of Object).ToArray) " pero solo me muestra una sola combiancion y este codigo muestra tres mesaggebox

Codigo que estoy usando

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

   Private Shadows Sub Shown() Handles MyBase.Shown

       Dim Elementos As Integer() =
       {
         1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
         11, 12, 13, 14, 15, 16, 17, 18
       }

       For X As Integer = 0 To Elementos.Count - 1 Step 4

           MessageBox.Show(
               String.Format("{0} {1} {2} {3}",
                   Elementos(X),
                   If(Not (X + 1) >= Elementos.Count, Elementos(X + 1), String.Empty),
                   If(Not (X + 2) >= Elementos.Count, Elementos(X + 2), String.Empty),
                   If(Not (X + 3) >= Elementos.Count, Elementos(X + 3), String.Empty),
                   "Cuatro Elementos"
               )
           )

       Next X

       Application.Exit()

   End Sub

End Class


Luis

#373
Cita de: Eleкtro en  2 Febrero 2014, 18:19 PM
No se si te refieres a hacer algo como esto, porque el ejemplo que has dado con datos de typo Byte , con varios 'For Range' "fijos" del 1 al 4 y esa condicional me sigue pareciendo que tiene poco que ver con la pregunta real.

Este código combina todos los elementos de un Array de forma aleatoria, el resultado (en tu caso) son combinaciones de números desordenados.

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

   ''' <summary>
   ''' Tu array numérico.
   ''' </summary>
   Private IntArray As Integer() =
   {
       10I, 20I, 30I, 40I, 50I, 60I, 70I, 80I, 90I
   }

   Private Sub Button1_Click() Handles Button1.Click

       TextBox2.Text = String.Join("; ", RandomizeArray(IntArray))
       ' TextBox2.Text = String.Join(Nothing, RandomizeArray(arr))

   End Sub

   ' By Elektro
   '
   ''' <summary>
   ''' Randomizes the elements of the given Collection.
   ''' </summary>
   ''' <typeparam name="T"></typeparam>
   ''' <param name="Collection">Indicates the Collection to randomize.</param>
   ''' <returns>IEnumerable{``0}.</returns>
   Public Function RandomizeArray(Of T)(ByVal Collection As IEnumerable(Of T)) As IEnumerable(Of T)

       Dim Randomizer As New Random
       Return (From Item As T In Collection Order By Randomizer.Next).ToArray

   End Function

End Class



Ok ya con esto que me dio elektro medio hice algo jejej bien introduzco el numero y me los combina . pero siempre hay pero jeje nesecito saber como hacer para que me los muestre de esta forma

121355 <ahora me los muestra de esta forma

12 13 55 <--asi es que me hacen falta  y pudiendo limitar la cantidad de números a mostrar esto es que solo me muestre digamos cuatro pares de numeros.los demas que sobran los combine en otra linea hasta acabar con los numeros


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

    Private TextBoxes As TextBox() = {Nothing}
    Private Result1 As Int32()
    Private _textBox As Object
    Private Property ListBox1Count As Integer
    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

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

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

        Result1 = {Num1 + 10, Num1 + 20, Num1 + 30} _
                  .Distinct().ToArray
    End Sub
    Private Sub Button1_Click() Handles Button1.Click

        TextBox2.Text = String.Join(Nothing, RandomizeArray(Result1))

    End Sub

   
    Public Function RandomizeArray(Of T)(ByVal Collection As IEnumerable(Of T)) As IEnumerable(Of T)

        Dim Randomizer As New Random
        Return (From Item As T In Collection Order By Randomizer.Next).ToArray

    End Function


End Class







#374
Bien lo que seria algo como esto pero en código mas bonito jejej y el proyecto viejo lo acabe gracias a todos :)

Ahora quiero es hacer son combinaciones y no de arrays si no de lo que tiene ese array que son numeros del 00 a 99 ...


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

       Dim a As Byte
       Dim b As Byte
       Dim c As Byte
       Dim d As Byte

       Textbox1.Text = ""

       For a = 1 To 4
           For b = 1 To 4
               For c = 1 To 4
                   For d = 1 To 4
                       If a = b Or a = c Or a = d Or b = c Or b = d Or c = d Then
                       Else
                           TextBox2.Text = TextBox1.Text & a & b & c & d & vbCrLf
                       End If
                   Next d
               Next c
           Next b
       Next a
   End Sub

End Class



Luis
(ahora espero antes de pinchar esto ,que salga lo del insert code ;) )




[MOD]: Genial, pero no hagas doble post utiliza el botón 'Modificar' :P
#375
hola trasteando por la Librería de Snippets encontre este codigo de combinaciones creo es de elektro :) ahora como ni idea de usar la regiones, si alguien me puede explicar el codigo como funciona la idea es que con un array que ya tengo con datos este codigo me coja de ese array y me los combine y muestre en un listbox estas combinaciones.

Mi array se llama " resul "  :rolleyes:

Citar
Código (vbnet) [Seleccionar]
Region " Permute all combinations of characters"

   ' [ Permute Characters Function ]
   '
   ' Examples :
   ' Dim Permutations As IEnumerable = Permute_Characters("abc", 2)
   ' For Each Permutation As IEnumerable(Of Char) In Permutations : RichTextBox1.Text &= vbNewLine & Permutation.ToArray : Next

   Private Shared Function Permute_Characters(Of T)(list As IEnumerable(Of T), length As Integer) As IEnumerable(Of IEnumerable(Of T))

       If length = 1 Then
           Return list.[Select](Function(x) New T() {x})
       Else
           Return Permute_Characters(list, length - 1).SelectMany(Function(x) list, Function(t1, t2) t1.Concat(New T() {t2}))
       End If

   End Function

#End Region


AAA y ya estoy con esto del insert code que no me sale joe....

Luis



#376
Cita de: Legnak en 28 Enero 2014, 01:07 AM
ahora si funciona  :)
Código (vbnet) [Seleccionar]
Public Class Form1
   
    Dim Max As Integer = 99
    Dim Xmin As Integer = 0
    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 _getNumbersNotInRange As Object

    Private Property ListBox1Count As Integer

    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


    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 Property GetNumbersNotInRange(ByVal Result11 As IEnumerable(Of Integer), ByVal Xmin As Integer, ByVal XMax As Integer) As Object
        Get
            Return _getNumbersNotInRange
        End Get
        Set(ByVal value As Object)
            _getNumbersNotInRange = value
        End Set
    End Property


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



        Result1 = {Num1 + 10, Num1 + 20, Num1 + 30} _
                  .Distinct().ToArray ' Elimino duplicados

        Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
                  .Distinct().ToArray ' Elimino duplicados

        Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
                  .Distinct().ToArray ' Elimino duplicados
        ' primero concatenas y eliminas duplicados en el primer array:

        Dim Result11 As IEnumerable(Of Integer) =
        (Result1.Concat(Result2).Concat(Result3).
          Distinct)


        ' Dim arregloSumas() As Integer = {10, 15, 20, 25, 30}
        Dim numerosFaltantesdelRango() As Integer = {}
        Dim rango_min As Integer = 0, rango_max As Integer = 99
        Dim tamanio As Integer
        Dim val As Integer


        Dim test As Integer
        For i = rango_min To rango_max
            val = i
            If Array.Exists(Result11.Cast(Of Object).ToArray, Function(value As Integer) value = val) = False Then 'Compruebo si el valor de i no aparece en el arreglo de las sumas

                test += 1
                tamanio = UBound(numerosFaltantesdelRango) + 1
                ReDim Preserve numerosFaltantesdelRango(tamanio)
                numerosFaltantesdelRango(tamanio) = val 'Agrego el valor al arreglo

            End If
        Next

        ListBox1.Items.AddRange(numerosFaltantesdelRango.Cast(Of Object).ToArray)

    End Sub
End Class




Perfecto perfecto  ;-)  ;-)  ;-)

Funciona como quería ¡ muchas gracias por tu ayuda

Luis


#377
Cita de: Legnak en 25 Enero 2014, 17:31 PM
en la respuesta que puse te deje un algoritmo sencillo de como hacer eso, y funciona

Como ya comente en esto soy novato lo mio era el viejo foxpro jejej pongo el codigo pero me error

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

   Dim Max As Integer = 99
   Dim Xmin As Integer = 0
   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 _getNumbersNotInRange As Object

   Private Property ListBox1Count As Integer

   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


   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 Property GetNumbersNotInRange(ByVal Result11 As IEnumerable(Of Integer), ByVal Xmin As Integer, ByVal XMax As Integer) As Object
       Get
           Return _getNumbersNotInRange
       End Get
       Set(ByVal value As Object)
           _getNumbersNotInRange = value
       End Set
   End Property


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

       

       Result1 = {Num1 + 10, Num1 + 20, Num1 + 30} _
                 .Distinct().ToArray ' Elimino duplicados

       Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
                 .Distinct().ToArray ' Elimino duplicados

       Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
                 .Distinct().ToArray ' Elimino duplicados
       ' primero concatenas y eliminas duplicados en el primer array:

       Dim Result11 As IEnumerable(Of Integer) =
       (Result1.Concat(Result2).Concat(Result3).
         Distinct)


       ' Dim arregloSumas() As Integer = {10, 15, 20, 25, 30}
       Dim numerosFaltantesdelRango() As Integer = {}
       Dim rango_min As Integer = 0, rango_max As Integer = 99
       Dim tamanio As Integer
       Dim val As Integer

       For i = rango_min To rango_max
           val = i
           If Array.Exists(Result11, Function(value As Integer) value = val) = False Then 'Compruebo si el valor de i no aparece en el arreglo de las sumas
               tamanio = numerosFaltantesdelRango.Length + 1
               ReDim numerosFaltantesdelRango(tamanio)
               numerosFaltantesdelRango(tamanio) = val 'Agrego el valor al arreglo
           End If
       Next
       ListBox1.Items.AddRange(numerosFaltantesdelRango.Cast(Of Object).ToArray)
   End Sub
End Class
#378
Bien todavia super atascado

No habria una forma de comparar los resultados del array que contiene los resultados
con los numeros del 00 al 99 y que diga cuales faltan ?

Joe pense que esto era facil jejej.

Luis
#379
Cita de: Eleкtro en 22 Enero 2014, 17:28 PM
A simple vista, no hay nada erroneo en la instrucción.

comprueba si la linea que me has mostrado es la misma que hace referencia a esta:
Comprueba que todos los valores que usas en el método de LINQ seán Integers, no longs no shorts no otra cosa, y prueba así, sin especificar el datatype de retorno:
Código (vbnet) [Seleccionar]
Result11 = Result11.Select(Function(Value) If(Value < MAX, Value, Rand.Next(0, MAX)))

De todas formas aún sigo esperando a que des un maldito detalle sobre el tipo de excepción de la que se trata, si en tiempo de ejecución o un error de compilación, aunque está claro que es de compilación pero bueno... para la próxima vez.

PD: Siempre puedes ponerle un par de breakpoints para inspeccionar más detalládamente los sucesos si se trata de una excepción en tiempo de ejecución.

saludos


si elektro hace referencia a

Form1.vb   78


Y el error es en tiempo de compilación


Luis



#380
Hola esto es lo que puedo copiar,me remarca todo el codigo que me diste

Result11 = Result11.Select(Function(Value As Integer) If(Value < MAX, Value, Rand.Next(0, MAX)))



CitarError   2   Error de resolución de sobrecarga porque ninguna de las funciones 'Select' a las que se tiene acceso se puede llamar con estos argumentos:
    Método de extensión 'Public Function Select(Of TResult)(selector As System.Func(Of Integer, Integer, TResult)) As System.Collections.Generic.IEnumerable(Of TResult)' definido en 'System.Linq.Enumerable': La función anidada no tiene una firma compatible con el delegado 'System.Func(Of Integer, Integer, TResult)'.
    Método de extensión 'Public Function Select(Of TResult)(selector As System.Func(Of Integer, Integer, TResult)) As System.Collections.Generic.IEnumerable(Of TResult)' definido en 'System.Linq.Enumerable': Los tipos de datos de los parámetros de tipo no se pueden inferir de estos argumentos. Este error se puede resolver especificando los tipos de datos explícitamente.
    Método de extensión 'Public Function Select(Of TResult)(selector As System.Func(Of Integer, TResult)) As System.Collections.Generic.IEnumerable(Of TResult)' definido en 'System.Linq.Enumerable': 'Rand' no está declarado. Puede que esté inaccesible debido a su nivel de protección.
    Método de extensión 'Public Function Select(Of TResult)(selector As System.Func(Of Integer, TResult)) As System.Collections.Generic.IEnumerable(Of TResult)' definido en 'System.Linq.Enumerable': Los tipos de datos de los parámetros de tipo no se pueden inferir de estos argumentos. Este error se puede resolver especificando los tipos de datos explícitamente.   C:\Users\Acuario\documents\visual studio 2010\Projects\Preueba\Preueba\Form1.vb   78   20   Preueba


Luis