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

#201
Eliminar numeros con terminaciones iguales

Hola de nuevo aca estoy con mis chapusas en programacion :)

Formo combinaciones de numeros de un arreglo o variables pero donde el resultado no debe tener el mismo numero terminal explico :)

Código (vbnet) [Seleccionar]
Dim resultss As IEnumerable(Of Integer) =
           {
               01,03,04,06,07,08,09,20,28,35.39,45,48,55,66,68,75,78.90,98........
           }

       Dim selectedValues As IEnumerable(Of Integer) = resultss.Take(10)

       Me.ListBox1.Items.AddRange(selectedValues.Cast(Of Object).ToArray)
   End Sub


esto me da combinaciones de 10 numeros


salida

01,03,04,06,07,08,09,20,28,35

39,45,48,55,66,68,75,78.90,98

en la primera combinacion esta el 08 y el 28
en la segunda combinacion estan el  45 55 75

la idea es que en ninguna combinacion  tenga repetidos el mismo numero terminal ?

Luis
#202
Cita de: Eleкtro en 20 Marzo 2015, 17:26 PM
Por qué resultss3 no es pública, es un miembro inaccesible ya que la declaras DENTRO de un Sub y su tiempo de vida es solo ese.

Resetea las que declares FUERA de los Subs.

Saludos!

Perfecto profesor :) otra cosa que aprendi con esta programacion gracias a ti

hasta otra :)

Luis
#203
Ostias     me pateo el ordenador jejejj , es broma con los controles no hay problemas pero con las variables me sale este error


"resultss3' no es un miembro de 'WindowsApplication1.Form1'.

Npi

Luis
#204
Cita de: Eleкtro en 20 Marzo 2015, 16:39 PM
Es lo que ocurre cuando tienes 100 membros en un mismo código con nombres casi identicos, te lo he dicho mil veces, tanto "resultsss" es un completo lio :-/

Tienes que hacerlo cómo lo estás haciendo, solo que debes fijarte mejor para añadir los controles que falten ya que supuestamente te estás olvidando de limpiar algún control, y por si acaso te diría que añadieses también los objetos públicos que hayas inicializado fuera de los Subs para resetear sus valores.

Ejemplo:
Código (vbnet) [Seleccionar]
   Private Sub Button2_Click_1(ByVal sender As Object, ByVal e As EventArgs) _
   Handles Button2.Click

       Me.CleanUp()

   End Sub

   Private Sub CleanUp()

       ' Tus famosos results y otras variables públicas, cómo se llamen:
       Me.Resultss1 = Nothing
       Me.Resultss2 = Nothing
       Me.Resultss3 = Nothing
       Me.VariableInteger = 0
       'etc...

       ' Tus controles:
       For Each tb As TextBox In Me.Controls.OfType(Of TextBox)()
           tb.Clear()
       Next tb
       For Each gb As GroupBox In Me.Controls.OfType(Of GroupBox)()
           For Each tb As TextBox In gb.Controls
               tb.Clear()
           Next
       Next gb
       Me.ListBox1.Items.Clear()
       Me.ListBox2.Items.Clear()
       Me.ListBox3.Items.Clear()
       Me.ListBox7.Items.Clear()

   End Sub


Poco más se puede hacer por ayudarte en eso, debes revisarlo tú :P


Muchas veces temo preguntar, por los regaños tuyos :)

gracias elektro :)

Luis




#205
.NET (C#, VB.NET, ASP) / Limpiar programa
20 Marzo 2015, 16:16 PM
Hola de nuevo por estos lares :) se que mi amigo Elecktro se preguntaria por mi jejje

Bueno os cuento a medida que avanzo con mas variables en mi programa me surge un problema  si hago las primeras operaciones me salen las cuentas bien,pero la siguiente ves que vuelvo a calcular me encuentro que las cuentas son otras diferentes yo creo que aunque uso un codigo me quedan todas las variables cargadas con el primer calculo y solo borro son los texboxes, esto se corrige cuando cierro el editor y vuelvo a abrir el programa
no se como limpiar las variables sin tener que cerrar todo y empezar de nuevo ;(


Código (vbnet) [Seleccionar]
 Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       For Each obj As Control In Me.Controls
           If (TypeOf obj Is TextBox) Then
               obj.Text = ""
           End If
           If (TypeOf obj Is GroupBox) Then
               For Each caja As Control In obj.Controls
                   If (TypeOf caja Is TextBox) Then
                       caja.Text = ""
                   End If
               Next
           End If
           ListBox1.Items.Clear()
           ListBox2.Items.Clear()
           ListBox3.Items.Clear()
           ListBox7.Items.Clear()

       Next
   End Sub



Luis
#206
 ;-) ;-) ;-) ;-) ;-) ;-) ;-) y yo solito era muy facil jejejje

Código (vbnet) [Seleccionar]
Dim Re3 As New Random
        Dim ReAsult2255e As IEnumerable(Of Integer) =
           (splits(0).Concat(splits(2).
           Distinct.
           Select(Function(Value As Integer)
                      Return If(Value < MAX, Value, Rand.Next(1, MAX))
                  End Function)))

        Dim seAlecctedValues231 As IEnumerable(Of Integer) = ReAsult2255e
        Dim liste3 As List(Of Integer) = ReAsult2255e.Take(11).ToList

        liste3.Sort()
        ListBox6.Items.AddRange(liste3.Cast(Of Object).ToArray)



#207
Cita de: Eleкtro en 16 Marzo 2015, 17:37 PM
Eso es una simple partición, que no concuerda en absoluto con las colecciones que estás generando en el primer código que mostraste, donde utilizas el operador Mod para filtrar la secuencia y, claro está, da un resultado muy diferente al que has hecho referencia ahora:

¿Entonces?.




En el primer caso, es decir, partir la colección en colecciones de 4 partes (cosa que ya te mostré cómo hacerlo) y rellenar con "ceros" los elementos restantes de la última "parte", es tan sencillo cómo esto:

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

   Private Sub Test() Handles MyBase.Shown

       Dim values As IEnumerable(Of Integer) =
           {
               1, 2, 3, 4,
               5, 6, 10, 11,
               14, 15, 54, 57,
               58, 60, 63, 64,
               65, 67
           }

       Dim splits As IEnumerable(Of IEnumerable(Of Integer)) =
           SplitIntoParts(collection:=values, amount:=4,
                          fillEmpty:=True)

       Me.ListBox1.Items.AddRange(splits(0).Cast(Of Object).ToArray)
       Me.ListBox2.Items.AddRange(splits(1).Cast(Of Object).ToArray)
       Me.ListBox3.Items.AddRange(splits(2).Cast(Of Object).ToArray)

   End Sub

   ''' <remarks>
   ''' *****************************************************************
   ''' Snippet Title: Split Collection Into Parts
   ''' Code's Author: Elektro
   ''' Date Modified: 16-March-2015
   ''' Usage Example:
   ''' Dim mainCol As IEnumerable(Of Integer) = {1, 2, 3, 4, 5, 6, 7, 8, 9}
   ''' Dim splittedCols As IEnumerable(Of IEnumerable(Of Integer)) = SplitColIntoParts(mainCol, amount:=4, fillEmpty:=True)
   ''' splittedCols.ToList.ForEach(Sub(col As IEnumerable(Of Integer))
   '''                                 Debug.WriteLine(String.Join(", ", col))
   '''                             End Sub)
   ''' *****************************************************************
   ''' </remarks>
   ''' <summary>
   ''' Splits an <see cref="IEnumerable(Of T)"/> into the specified amount of elements.
   ''' </summary>
   ''' <typeparam name="T"></typeparam>
   ''' <param name="collection">The collection to split.</param>
   ''' <param name="amount">The target elements amount.</param>
   ''' <param name="fillEmpty">If set to <c>true</c>, generate empty elements to fill the last secuence's part amount.</param>
   ''' <returns>IEnumerable(Of IEnumerable(Of T)).</returns>
   Public Shared Function SplitIntoParts(Of T)(ByVal collection As IEnumerable(Of T),
                                               ByVal amount As Integer,
                                               ByVal fillEmpty As Boolean) As IEnumerable(Of IEnumerable(Of T))

       Dim newCol As IEnumerable(Of List(Of T)) =
           (From index As Integer
           In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / amount)))
           Select collection.Skip(index * amount).Take(amount).ToList).ToList

       If fillEmpty Then

           Do Until newCol.Last.Count = amount
               newCol.Last.Add(Nothing)
           Loop

       End If

       Return newCol

   End Function

End Class


EDITO:
Una actualización de la función:

Código (vbnet) [Seleccionar]
   Public Shared Function SplitIntoParts(Of T)(ByVal collection As IEnumerable(Of T),
                                               ByVal amount As Integer,
                                               ByVal fillEmpty As Boolean) As IEnumerable(Of IEnumerable(Of T))

       Return From index As Integer In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / amount)))
              Select If(Not fillEmpty,
                        collection.Skip(index * amount).Take(amount),
                        If((collection.Count() - (index * amount)) >= amount,
                           collection.Skip(index * amount).Take(amount),
                           collection.Skip(index * amount).Take(amount).
                                                           Concat(From i As Integer
                                                                  In Enumerable.Range(0, amount - (collection.Count() - (index * amount)))
                                                                  Select DirectCast(Nothing, T))))

   End Function


Saludos



Funciona bien ya te habías preocupado no ? era justo lo que queria hacer ya que me deja mucho campo para mi investigacion :)  ahora estoy tratando de mejorarlo con un codigo que me diste te muestro y como te lo paso se que no funciona pero es para la idea de relleñar las variables cuando no hay mas numeros  con los numeros aleatorios dentro del rango


tu funcion

Código (vbnet) [Seleccionar]
Select(Function(Value As Integer)
                      Return If(Value < MAX, Value, Rand.Next(1, MAX))
                  End Function))



donde creo deberia ir ;(

Código (vbnet) [Seleccionar]
Dim values As IEnumerable(Of Integer) =
            {
                1, 2, 3, 4,
                5, 6, 10, 11,
                14, 15, 54, 57,
                58, 60, 61, 64,
                65, 67, 71, 75
            }
        Dim Re3 As New Random
        Dim splits As IEnumerable(Of IEnumerable(Of Integer)) =
            SplitIntoParts(collection:=values, amount:=4,
                           fillEmpty:=True)


        Me.ListBox1.Items.AddRange(splits(0).Cast(Of Object).ToArray)
        Me.ListBox2.Items.AddRange(splits(1).Cast(Of Object).ToArray)
        Me.ListBox3.Items.AddRange(splits(2).Cast(Of Object).ToArray)   



ya he tratado yo jejeje pero a la final el ordenador me dijo Veta a tomar por el c,, Viejo inutil


luis

#208
Diossssssssssss elektro

no te suena algo de esto ?

a=1
b=2
a+b= 3

Jejejjje es Broma  lo probare y te cuento ya que seguro que alguna pega tendre :(

luis
#209
Funciona bien pero a medida que los números del arreglo se hace mas largo estos resultados se vuelven inestables y ya no me sigue la secuencia .

simplemente quiero asignar los primero 4 números del arreglo a Variable  (A)  desde el quinto numero a variable (B)  y asi sucesivamente realmente son posiciones  en fox se hacia con el ( largo ) pero aca a pesar de que tengo la mañana viendo y re viendo no entiendo la sintexis

Arreglo NÚMEROS = (1, 2, 3, 4, 5, 6, 10, 11, 14, 15,  54, 57, 58, 60, 63, 64, 65, 67,)

Esta seria la salida

A=01, 02, 03, 04,
B=05, 06, 10, 11,
C=14, 15,  54, 57
D=58, 60, 63, 64
E= 65, 67, 00  00 <---aca me las arreglo con un pedazo de código tuyo :) para completar


Luis





#210
Estaba trabajando este código pero después de escribir la ostia a medida que alargo los números estos se quedan cortos ;(

yo lo que busco es pasar los números de la cadena por orden de menor a mayor en grupos de cuatro en cada variable pero necesito saber los nombres de las variable

ejemplo
variable a=(valor de 1 2 3 4)
variable b=(valor de 5 6 10 11 )

Código (vbnet) [Seleccionar]
Dim numbers() As Integer = {1, 2, 3, 4, 5, 6, 10, 11, 14, 15,  54, 57, 58, 60, 63, 64, 65, 67, 68, 69, 70, 71, 75, 76, 77, 79, 80}


   Dim evensQuery = From num In numbers
                        Where num Mod 2 = 0
                        Select num

       Dim selectedValues As IEnumerable(Of Integer) = evensQuery.Take(4)
       ListBox1.Items.AddRange(selectedValues.Cast(Of Object).ToArray)

       '----------------------------------------2
       Dim ll = From num In numbers
               Where num Mod 2 = 1
               Select num

       Dim selected2Values As IEnumerable(Of Integer) = ll.Take(4)
       ListBox2.Items.AddRange(selected2Values.Cast(Of Object).ToArray)

       '---------------------------------------------------------3
       Dim ll1 = From num In numbers
               Where num Mod 3 = 0
               Select num

       Dim selected222Values As IEnumerable(Of Integer) = ll1.Take(4)
       ListBox3.Items.AddRange(selected222Values.Cast(Of Object).ToArray)



Luis