elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Otra mision con variables
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Otra mision con variables  (Leído 6,006 veces)
luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Otra mision con variables
« en: 31 Marzo 2015, 15:43 pm »

Hola a todos aca traigo otra e las mias

tengo tres variables dos con arreglos y una tercera que trabajaria con los registros de la variable que cumpla con la condicion en ese momento pero no se si se puede hacer algo con esta chapuza que haciendo  :)


Código
  1.    Dim values1 As    integer  
  2.        Dim values2 As   integer
  3.       [color=red] Dim compuesto As Integer <-- a esta variable llegaria los datos de cualquiera de las dos anteriores[/color]
  4.  
  5.  
  6.  
  7.  
  8.        Dim Re As IEnumerable(Of Integer) =
  9.           (values).
  10.           Distinct.
  11.           Select(Function(values As Integer)
  12.                      If values <= 35 Then
  13.  
  14.                          Return values
  15.                      Else
  16.  
  17.                          Return values2
  18.  
  19.                      End If
  20.  
  21.                  End Function)
  22.  


Luis


« Última modificación: 1 Abril 2015, 16:02 pm por luis456 » En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Otra mision con variables
« Respuesta #1 en: 31 Marzo 2015, 16:15 pm »

No entiendo exactamente a donde quieres llegar... ¿cual es el problema o duda que tienes con el código que has mostrado?.

tengo tres variables dos con arreglos y una tercera
En el código que has mostrado solo hay un arreglo/array y 3 variables enteras  :-\


En línea



luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Otra mision con variables
« Respuesta #2 en: 31 Marzo 2015, 16:29 pm »

No entiendo exactamente a donde quieres llegar... ¿cual es el problema o duda que tienes con el código que has mostrado?.
En el código que has mostrado solo hay un arreglo/array y 3 variables enteras  :-\

Siempre estoy con prisas jejej y me enredo yo mismo,

 Dim values1 As  integer (trae de la funcion, x numeros )
 Dim values2 As  integer ( trae de la misma funcion otros x numeros)
 Dim compuesto as integer ( a esta pasarle los valores de alguna de ellas )


lo que nesecito es pasar a  " Dim compuesto "  el valor de cualquiera de estas dos variables " Dim values1"   " Dim values2"  cuando alguna de ellas  sobrepasen los 35 registros ,si values1 tiene mas de 35 regitros se pasa a  "compuesto" y la otra se queda sin hacer nada y por supuesto al reves .


Luis

En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Otra mision con variables
« Respuesta #3 en: 31 Marzo 2015, 17:05 pm »

lo que nesecito es pasar a  " Dim compuesto "  el valor de cualquiera de estas dos variables " Dim values1"   " Dim values2"  cuando alguna de ellas  sobrepasen los 35 registros ,si values1 tiene mas de 35 regitros se pasa a  "compuesto" y la otra se queda sin hacer nada y por supuesto al reves .

¿por "registros" quieres decir "valor"?, es decir, ¿que si la variable "values1" o "values2" es mayor de '35', se asigne el mismo valor a la variable "compuesto"?

Código
  1. if values1 > 35 then
  2.  compuesto = values1
  3.  
  4. elseif values2 > 35 then
  5.  compuesto = values2
  6.  
  7. else
  8.  compuesto = 0
  9.  
  10. end if

¿?
En línea



luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Otra mision con variables
« Respuesta #4 en: 31 Marzo 2015, 18:09 pm »

¿por "registros" quieres decir "valor"?, es decir, ¿que si la variable "values1" o "values2" es mayor de '35', se asigne el mismo valor a la variable "compuesto"?

Código
  1. if values1 > 35 then
  2.  compuesto = values1
  3.  
  4. elseif values2 > 35 then
  5.  compuesto = values2
  6.  
  7. else
  8.  compuesto = 0
  9.  
  10. end if

¿?



Algunas fallitas jejej pero es mas o menos la idea

!) el operador '>' no está definido para los tipos 'System.Collections.Generic.IEnumerable(Of Integer)' y 'Integer'.
2) un valor de tipo 'Integer' no se puede convertir en 'System.Collections.Generic.IEnumerable(Of Integer)'.

luis
En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Otra mision con variables
« Respuesta #5 en: 31 Marzo 2015, 18:14 pm »

Algunas fallitas jejej pero es mas o menos la idea

!) el operador '>' no está definido para los tipos 'System.Collections.Generic.IEnumerable(Of Integer)' y 'Integer'.
2) un valor de tipo 'Integer' no se puede convertir en 'System.Collections.Generic.IEnumerable(Of Integer)'.

Las variables que has mostrado en tu código eran todas Integer.

Si no te explicas mejor ni muestras un ejemplo real...

Código:
if colección(índice).Count > 35 then...

elseif...
else...
end if

Saludos
En línea



luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Otra mision con variables
« Respuesta #6 en: 31 Marzo 2015, 18:43 pm »

Bien te paso el code con el problema fijate que con  " Values " no llega la cantidad para hacer funcionar el " splits(15) " ya que  " values " no llega a 35 numeros y me sale lo del error ese de que hablamos en el otro post. " null " y se me ocurrio esta idea que me parece perfecta para mi code jejej

Pero si vamos a "values2" veras que si tiene mas de 35 numeros con lo cual no da problemas el  " splits(15) "  y tu diras aja y porque no usamos solo values2 ? porque son dos variables que vienen de una funcion  y una ves "values " tiene mas que la otra y otras values2 se invierten las cantidades  y esto varia segun los calculos que hago.


Código
  1. Public Class Form1
  2.    ReadOnly MAX As Integer = 90
  3.    Dim Rand As New Random
  4.    Dim compuesto As IEnumerable(Of Integer)
  5.  
  6.    Private Sub Test() Handles MyBase.Shown
  7.        Dim values As IEnumerable(Of Integer) =
  8.            {
  9.                1, 2, 3, 4,
  10.                5, 6, 10, 11,
  11.                14, 15, 54, 57,
  12.                58, 60, 63, 64,
  13.                65, 67
  14.            }
  15.  
  16.        Dim values2 As IEnumerable(Of Integer) =
  17.            {
  18.                1, 2, 3, 4,
  19.                5, 6, 10, 11,
  20.                14, 15, 54, 57,
  21.                58, 60, 63, 64,
  22.                65, 67, 68, 69,
  23.                70, 75, 78, 79, 80,
  24.                81, 82, 86, 88, 89, 90, 92,
  25.                93, 94, 95, 97, 98, 99
  26.            }
  27.  
  28.  
  29.        pondria en donde esta " values " a compuesto
  30.  
  31.        Dim splits As IEnumerable(Of IEnumerable(Of Integer)) =
  32.            SplitIntoParts(collection:=values, amount:=2, fillEmpty:=True)
  33.  
  34.        Me.ListBox1.Items.AddRange(splits(0).Cast(Of Object).ToArray)
  35.        Me.ListBox2.Items.AddRange(splits(1).Cast(Of Object).ToArray)
  36.        Me.ListBox3.Items.AddRange(splits(2).Cast(Of Object).ToArray)
  37.        Me.ListBox4.Items.AddRange(splits(3).Cast(Of Object).ToArray)
  38.        Me.ListBox5.Items.AddRange(splits(4).Cast(Of Object).ToArray)
  39.  
  40.        Dim concatCol As IEnumerable(Of Integer) = splits(0).Concat(splits(3).Concat(splits(4).Concat(splits(5).Concat(splits(15)))))
  41.        Dim distinctCol As IEnumerable(Of Integer) = concatCol.Distinct.Skip(2), Take(10)
  42.        Dim selectCol As IEnumerable(Of Integer) = distinctCol.Select(Function(value As Integer)
  43.                                                                          If value < MAX Then
  44.                                                                              Return value
  45.                                                                          Else
  46.                                                                              Return Rand.Next(1, MAX)
  47.  
  48.                                                                          End If
  49.  
  50.                                                                      End Function)
  51.  
  52.  
  53.        ListBox8.Items.AddRange(selectCol.Cast(Of Object).ToArray)
  54.  
  55.  
  56.    End Sub
  57.  
  58.  
  59.    Public Shared Function SplitIntoParts(Of T)(ByVal collection As IEnumerable(Of T),
  60.                                                ByVal amount As Integer,
  61.                                                ByVal fillEmpty As Boolean) As IEnumerable(Of IEnumerable(Of T))
  62.  
  63.        Return From index As Integer In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / amount)))
  64.               Select If(Not fillEmpty,
  65.                         collection.Skip(index * amount).Take(amount),
  66.                         If((collection.Count() - (index * amount)) >= amount,
  67.                            collection.Skip(index * amount).Take(amount),
  68.                            collection.Skip(index * amount).Take(amount).
  69.                                                            Concat(From i As Integer
  70.                                                                   In Enumerable.Range(0, amount - (collection.Count() - (index * amount)))
  71.                                                                   Select DirectCast(Nothing, T))))
  72.    End Function
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81. End Class
  82.  
« Última modificación: 31 Marzo 2015, 18:47 pm por luis456 » En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Otra mision con variables
« Respuesta #7 en: 31 Marzo 2015, 19:14 pm »

El requisito de que sean 35 elementos no se por que es, pero si el problema es que quieres evitar el error de valor nulo, y suponiendo que no te importe evitar dicho error rellenando los elmentos restantes de la secuencia con ceros hasta llegar a los 35 elementos, entonces puedes hacer simplemente eso, rellenar (bueno, concatenar la secuencia con una secuencia de ceros):

Código
  1. If values.Count < 35 Then
  2.    values = values.Concat(Enumerable.Repeat(Of Integer)(0, (35 - values.Count)))
  3. End If
  4.  
  5. MsgBox(values.Count) ' 35

¿eso te sirve para lo que quieres hacer?

Saludos.
« Última modificación: 31 Marzo 2015, 19:23 pm por Eleкtro » En línea



luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Otra mision con variables
« Respuesta #8 en: 31 Marzo 2015, 19:27 pm »

El requisito de que sean 35 elementos no se por que es, pero si el problema es que quieres evitar el error de valor nulo, y suponiendo que no te importe evitar dicho error rellenando los elmentos restantes de la secuencia con ceros hasta llegar a los 35 elementos, entonces puedes hacer simplemente eso, rellenar (bueno, concatenar la secuencia con una secuencia de ceros):

Código
  1. If values.Count < 35 Then
  2.    values = values.Concat(Enumerable.Repeat(Of Integer)(Nothing, (35 - values.Count)))
  3. End If
  4.  
  5. MsgBox(values.Count) ' 35

¿eso te sirve para lo que quieres hacer?

Saludos.


Pense en eso una ves pero aparte de " Feo "  y no importa que sea para mi jejej, me gusta mucho la idea de poder usar las dos variables ya que mejora sustancialmente el poder de calculo de mi code

Lo de los 35 numeros es el minimo para que (splits(15) tenga numeros para evitar el error , ya que mi idea es seguir aumentando los splits pero modificando la rutina y las variables y estoy parado en este punto y mira que me horas he vistando la pagina " FAMOSA " donde esta todo lo de linq: jejeje

alguna idea ?   Profe 
Luis


En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Otra mision con variables
« Respuesta #9 en: 31 Marzo 2015, 20:07 pm »

Pero es que el problema raíz se debe solucionar así...

Quizás yo entiendo mal lo que pretendes hacer o quizás le estás dando el enfoque incorrecto al código puesto que si quieres usar splits(15) entonces debes incrementar la colección 'values'.

Mira, tienes una colección de 18 números:

Citar
Código
  1.        Dim values As IEnumerable(Of Integer) =
  2.            {
  3.                1, 2,
  4.                3, 4,
  5.                5, 6,
  6.                10, 11,
  7.                14, 15,
  8.                54, 57,
  9.                58, 60,
  10.                63, 64,
  11.                65, 67
  12.            }

Y la particionas en colecciones de 2 elementos cada una, es decir, un total de 9:
Citar
Código
  1.        Dim splits As IEnumerable(Of IEnumerable(Of Integer)) =
  2.            SplitIntoParts(collection:=values, amount:=2, fillEmpty:=True)

Desde 'splits(0)' hasta 'splits(8)'.

Pero aquí intentas acceder al índice 15 (splits(15)):
Citar
Código
  1. Dim concatCol As IEnumerable(Of Integer) = splits(0).Concat(splits(3).Concat(splits(4).Concat(splits(5).Concat(splits(15)))))

Si antes de partir no rellenas la colección ' values' con ceros o con lo que sea, entonces dime tú cómo vas a pretender acceder a splits(15) cuando cómo bien dices no llega a 15, son 9 (splits(8)),
la colección que vas a partir debería contener 32 números en vez de 18 para así poder llegar a 16 secuencias, a splits(15).



Por cierto, he modificado la función para hacerla más comprensible y le añadí un parámetro adicional (valueToFill):

Código
  1.  
  2.    ''' <remarks>
  3.    ''' *****************************************************************
  4.    ''' Snippet Title: Split Collection Into Number Of elements
  5.    ''' Code's Author: Elektro
  6.    ''' Date Modified: 31-March-2015
  7.    ''' Usage Example:
  8.    ''' Dim mainCol As IEnumerable(Of Integer) = {1, 2, 3, 4, 5, 6, 7, 8, 9}
  9.    ''' Dim splittedCols As IEnumerable(Of IEnumerable(Of Integer)) = SplitIntoNumberOfelements(col:=mainCol, amount:=4, fillEmpty:=True, valueToFill:=0)
  10.    ''' splittedCols.ToList.ForEach(Sub(col As IEnumerable(Of Integer))
  11.    '''                                 Debug.WriteLine(String.Join(", ", col))
  12.    '''                             End Sub)
  13.    ''' *****************************************************************
  14.    ''' </remarks>
  15.    ''' <summary>
  16.    ''' Splits an <see cref="IEnumerable(Of T)"/> into secuences with the specified amount of elements each one.
  17.    ''' </summary>
  18.    ''' <typeparam name="T"></typeparam>
  19.    ''' <param name="col">The collection to split.</param>
  20.    ''' <param name="amount">The target elements amount.</param>
  21.    ''' <param name="fillEmpty">If set to <c>true</c>, generates empty elements to fill the last secuence's part amount.</param>
  22.    ''' <param name="valueToFill">An optional value used to fill the last secuence's part amount.</param>
  23.    ''' <returns>IEnumerable(Of IEnumerable(Of T)).</returns>
  24.    Public Shared Function SplitIntoNumberOfelements(Of T)(ByVal col As IEnumerable(Of T),
  25.                                                           ByVal amount As Integer,
  26.                                                           ByVal fillEmpty As Boolean,
  27.                                                           Optional valueToFill As T = Nothing) As IEnumerable(Of IEnumerable(Of T))
  28.  
  29.        Return (From count As Integer In Enumerable.Range(0, CInt(Math.Ceiling(col.Count() / amount)))).
  30.                Select(Function(count)
  31.  
  32.                           Select Case fillEmpty
  33.  
  34.                               Case True
  35.                                   If (col.Count - (count * amount)) >= amount Then
  36.                                       Return col.Skip(count * amount).Take(amount)
  37.  
  38.                                   Else
  39.                                       Return col.Skip(count * amount).Take(amount).
  40.                                                  Concat(Enumerable.Repeat(Of T)(
  41.                                                         valueToFill,
  42.                                                         amount - (col.Count() - (count * amount))))
  43.                                   End If
  44.  
  45.                               Case Else
  46.                                   Return col.Skip(count * amount).Take(amount)
  47.  
  48.                           End Select
  49.  
  50.                       End Function)
  51.  
  52.    End Function
« Última modificación: 31 Marzo 2015, 20:15 pm por Eleкtro » En línea



Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pasar variables por formulario sin variables globales¿? « 1 2 »
PHP
hardkoo 11 9,709 Último mensaje 22 Noviembre 2006, 12:55 pm
por chicuela66
[BATCH] ¿Como puedo meter variables dentro de variables?
Scripting
Meine programmen 1 4,133 Último mensaje 24 Marzo 2012, 16:48 pm
por Eleкtro
Acceder a variables de una clase desde otra clase?
Programación C/C++
overxfl0w13 1 5,327 Último mensaje 12 Julio 2012, 00:52 am
por eleon
Trasladar sangre a los hospitales, otra misión para los drones
Noticias
wolfbcn 0 1,014 Último mensaje 8 Octubre 2014, 18:19 pm
por wolfbcn
¿que son la mision y vision en sistemas de informacion?
Desarrollo Web
Filantropo 5 3,457 Último mensaje 11 Enero 2021, 20:09 pm
por naumv11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines