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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Otra de las mias jejje traspasar datos condicionados de una variable a otras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Otra de las mias jejje traspasar datos condicionados de una variable a otras  (Leído 6,610 veces)
luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Otra de las mias jejje traspasar datos condicionados de una variable a otras
« en: 3 Marzo 2015, 23:07 pm »

Bueno otro de mis inventos chungos

tengo una variable x2 integer que contiene x (es variable la cantidad) de numeros que contendria esta variable, ya saben el famoso 00 al 99 y quiero asignar a otras variables digamos variable  lx1 los primeros cuatro numeros de la variable x2 y despues los siguientes otros cuatro numeros a otra variable  lx2 y a si con todos los numeros de la variable x2 hasta acabar con todos,


Espero se entienda :)

Gracias
Luis





« Última modificación: 22 Marzo 2015, 10:38 am por luis456 » En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
MCLucro

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: Otra de las mias jejje traspasar datos condicionados de una variable a otras
« Respuesta #1 en: 3 Marzo 2015, 23:19 pm »

Muestranos por lo menos algo de código que hayas intentado hacer porque parece que quieres que te hagan la tarea jaja ;P .
Pero bueno, así a voz de pronto (no te voy a poner código) te podría sugerir almacenar los numeros del 00 al 99 en un vector y otro vector con las variables que vamos a utilizar para copiar los datos. Hecho esto haces un ciclo for que recorra desde el 00 al 99. Dentro del ciclo habría un puntero que apuntaría a la dirección de memoria de la variable donde quieres copiar los datos. La magia del ejercicio sería hacer una condición del tipo if(i%4==0)(siendo i el contador del ciclo for), y cuando esta condicion se cumpla cambiaríamos la posicion de memoria a la que apunta nuestro puntero a la dirección de memoria de otra variable en nuestro vector de variables. Creo que más o menos si sigues estas instrucciones encontrarás el resultado que quieres.


En línea

Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.788



Ver Perfil
Re: Otra de las mias jejje traspasar datos condicionados de una variable a otras
« Respuesta #2 en: 4 Marzo 2015, 09:43 am »

Si no he entendido mal, tienes una colección de números cómo esta:
Código
  1. Dim collection As IEnumerable(Of Integer) = Enumerable.Range(1, 99)

Y quieres partirlo en colecciones de 4 elementos cada una:
Código
  1. Dim parts As Integer = 4

Pues, cómo siempre te digo, usa LINQ:
Código
  1. Dim result As IEnumerable(Of IEnumerable(Of Integer)) =
  2.    From index As Integer
  3.    In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / parts)))
  4.    Select collection.Skip(index * parts).Take(parts)

Saludos
En línea

luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Otra de las mias jejje traspasar datos condicionados de una variable a otras
« Respuesta #3 en: 5 Marzo 2015, 11:55 am »

Si no he entendido mal, tienes una colección de números cómo esta:
Código
  1. Dim collection As IEnumerable(Of Integer) = Enumerable.Range(1, 99)

Y quieres partirlo en colecciones de 4 elementos cada una:
Código
  1. Dim parts As Integer = 4

Pues, cómo siempre te digo, usa LINQ:
Código
  1. Dim result As IEnumerable(Of IEnumerable(Of Integer)) =
  2.    From index As Integer
  3.    In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / parts)))
  4.    Select collection.Skip(index * parts).Take(parts)

Saludos


Bueno  como soy un poco subnormal con esto, estaba modificando la función que entrega los números en variables apartes usando  para limitar con " take = 4) y después concatenando las variables resultantes ???? toda una chapuza jejej

Me he puesto con tu codigo pero siempre me pasa lo mismo al mostrar :(

Código
  1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.  
  3.        Dim collection As IEnumerable(Of Integer) = Enumerable.Range(1, 99)
  4.  
  5.        Dim parts As Integer = 4
  6.  
  7.  
  8.        Dim result As IEnumerable(Of IEnumerable(Of Integer)) =
  9.    From index As Integer
  10.    In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / parts)))
  11.    Select collection.Skip(index * parts).Take(parts)
  12.  
  13.        ListBox1.Items.AddRange(parts.Cast(Of Object).ToArray) <----error como siempre
  14.  
  15.    End Sub


Luis








En línea

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

Mensajes: 9.788



Ver Perfil
Re: Otra de las mias jejje traspasar datos condicionados de una variable a otras
« Respuesta #4 en: 5 Marzo 2015, 13:03 pm »

Código
  1. ListBox1.Items.AddRange(parts.Cast(Of Object).ToArray) <----error como siempre

Ese error ya lo sufriste anteriormente por la mimsa causa y te expliqué el motivo.

Primero de nada, en el código que he citado, al método ListBox.Items.AddRange() le estás pasando la variable 'parts' que solo es un simple valor Integer, así que voy a hacer cómo que no he leido eso y vamos a suponer que al método le pasas la variable 'result', que es en realidad lo que le querrías intentar pasar, quedando así:
Código
  1. ListBox1.Items.AddRange(result.Cast(Of Object).ToArray)

El método ListBox.Items.AddRange() espera que le pases como parámetro un array de objetos (una colección de strings por ejemplo, IEnumerable(Of String).Cast(Of Object).ToArray, o un array, New Object() {1,2,3}).

Pero 'result' es una colección que contiene sub-colecciones ( IEnumerable(Of IEnumerable(Of T)) ), no es un tipo de valor que vayas a poder visualizar en el listbox, por que tienes que pasarle un array que contenga los elementos que quieras mostrar (los valores Integer), no pasarle un array que contenga más arrays.

piensa, ¿qué debes hacer?, ¿debo volver a decírte lo que siempre te digo qué debes usar para resolver la mayoría de los problemas que tienes? (eso ha sido una pista), jeje.

Saludos!
« Última modificación: 5 Marzo 2015, 13:24 pm por Eleкtro » En línea

luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Otra de las mias jejje traspasar datos condicionados de una variable a otras
« Respuesta #5 en: 5 Marzo 2015, 15:32 pm »

Ese error ya lo sufriste anteriormente por la mimsa causa y te expliqué el motivo.

Primero de nada, en el código que he citado, al método ListBox.Items.AddRange() le estás pasando la variable 'parts' que solo es un simple valor Integer, así que voy a hacer cómo que no he leido eso y vamos a suponer que al método le pasas la variable 'result', que es en realidad lo que le querrías intentar pasar, quedando así:
Código
  1. ListBox1.Items.AddRange(result.Cast(Of Object).ToArray)

El método ListBox.Items.AddRange() espera que le pases como parámetro un array de objetos (una colección de strings por ejemplo, IEnumerable(Of String).Cast(Of Object).ToArray, o un array, New Object() {1,2,3}).

Pero 'result' es una colección que contiene sub-colecciones ( IEnumerable(Of IEnumerable(Of T)) ), no es un tipo de valor que vayas a poder visualizar en el listbox, por que tienes que pasarle un array que contenga los elementos que quieras mostrar (los valores Integer), no pasarle un array que contenga más arrays.

piensa, ¿qué debes hacer?, ¿debo volver a decírte lo que siempre te digo qué debes usar para resolver la mayoría de los problemas que tienes? (eso ha sido una pista), jeje.

Saludos!


Hola ya se LINQ: LINQ: LINQ: jejej  no se donde esta ese código que me hiciste que es parecido a esto, lo unico que me acuerdo es que tengo que crear una nueva lista (no se si me vuelvo a equivocar  jeje ) por cierto he estado estudiando lo de LINQ: y me tope con esto que se parece a lo que estuvimos haciendo la otra ves lo malo es que puedo ir creando uno por uno modificando la condiciones pero se me hace muyyy largo jejej esto es muy similar a lo que quiero hacer


Codigo
Código
  1. ' mostrar lo que quiera de dos en dos o tres en tres.
  2.        Dim numbers() As Integer = {0, 1, 2, 3, 4, 5, 6, 10, 15, 20, 25, 30, 35, 45}
  3.  
  4.        '
  5.        Dim evensQuery = From num In numbers
  6.                         Where num Mod 2 = 1
  7.                         Select num
  8.  
  9.        ListBox2.Items.AddRange(evensQuery.Cast(Of Object).ToArray)


muestra

1
3
5
15
25
35
45

Como veras salta de tres entres 1 3 5 etc pero esto solo lo hace una ves, la pregunta es como se podría hacer para que haga lo mismo  (bucle imagino ) arranque con lo mismo pero desde el siguiente numero en este caso el numero  2 4 6 15 25 35 45 y aci con todos

luis

En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Otra de las mias jejje traspasar datos condicionados de una variable a otras
« Respuesta #6 en: 7 Marzo 2015, 16:30 pm »

Ese error ya lo sufriste anteriormente por la mimsa causa y te expliqué el motivo.

Primero de nada, en el código que he citado, al método ListBox.Items.AddRange() le estás pasando la variable 'parts' que solo es un simple valor Integer, así que voy a hacer cómo que no he leido eso y vamos a suponer que al método le pasas la variable 'result', que es en realidad lo que le querrías intentar pasar, quedando así:
Código
  1. ListBox1.Items.AddRange(result.Cast(Of Object).ToArray)

El método ListBox.Items.AddRange() espera que le pases como parámetro un array de objetos (una colección de strings por ejemplo, IEnumerable(Of String).Cast(Of Object).ToArray, o un array, New Object() {1,2,3}).

Pero 'result' es una colección que contiene sub-colecciones ( IEnumerable(Of IEnumerable(Of T)) ), no es un tipo de valor que vayas a poder visualizar en el listbox, por que tienes que pasarle un array que contenga los elementos que quieras mostrar (los valores Integer), no pasarle un array que contenga más arrays.

piensa, ¿qué debes hacer?, ¿debo volver a decírte lo que siempre te digo qué debes usar para resolver la mayoría de los problemas que tienes? (eso ha sido una pista), jeje.

Saludos!


Bueno dejando lo otro vuelvo al problema inicial por mas que miro Linq en  msdn.microsoft.com no logro controlar esto lo unico que he podido hacer es mostrar los numeros jejej y revizando los codigos de elektro lo que consegui fue el ejemplo pero era para combinar

codigo

Código
  1. Dim collection As IEnumerable(Of Integer) = Enumerable.Range(1, 99)
  2.  
  3.        Dim parts As Integer = 4
  4.  
  5.  
  6.        Dim result As IEnumerable(Of IEnumerable(Of Integer)) =
  7.    From index As Integer
  8.    In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / parts)))
  9.    Select collection.Skip(index * parts).Take(parts)
  10.  
  11.        ListBox5.Items.Add(String.Join(", ", From index As Integer In collection
  12.                                                                      Select If(index.ToString.Length = 1I,
  13.                                                                                index.ToString.Insert(0I, "0"c),
  14.                                                                                index.ToString)))




Luis


En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Otra de las mias jejje traspasar datos condicionados de una variable a otras
« Respuesta #7 en: 8 Marzo 2015, 09:22 am »

A ver que estoy mal ? he probado y reprobado y no me sale

Código
  1. '  Dim collection As IEnumerable(Of Integer) = Enumerable.Range(1, 11)
  2.        Dim collection() As Integer = {1, 2, 3, 4, 5, 6, 10, 15, 20, 22, 24, 25, 30, 35, 45, 47, 50, 54, 57, 58, 60, 67, 68, 69, 70, 71, 75, 77, 79, 80}
  3.  
  4.        Dim parts As Integer = 4
  5.  
  6.  
  7.        Dim result As IEnumerable(Of IEnumerable(Of Integer)) =
  8.    From index As Integer
  9.    In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / parts)))
  10.    Select collection.Skip(index * parts).Take(parts)
  11.  
  12.        Dim dinosaurs As New List(Of Integer)(parts)
  13.  
  14.        ListBox5.Items.AddRange(dinosaurs.Cast(Of Object).ToArray)


Luis
En línea

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

Mensajes: 9.788



Ver Perfil
Re: Otra de las mias jejje traspasar datos condicionados de una variable a otras
« Respuesta #8 en: 8 Marzo 2015, 10:35 am »

Tienes la colección estática y principal, con nombre 'mainCol'.

Código
  1.        ' La colección principal.
  2.        Dim mainCol As IEnumerable(Of Integer) =
  3.            {
  4.                1, 2, 3, 4,
  5.                5, 6, 10, 15,
  6.                20, 22, 24, 25,
  7.                30, 35, 45, 47,
  8.                50, 54, 57, 58,
  9.                60, 67, 68, 69,
  10.                70, 71, 75, 77,
  11.                79, 80
  12.            }

Tienes la colección principal, dividida en una colección que contiene colecciones de 4 elementos (total: 8 sub-colecciones), con nombre 'splittedCols'.

Código
  1.        ' La colección principal, dividida en una colección que contiene colecciones de 4 elementos (total: 8 colecciones).
  2.        Dim parts As Integer = 4
  3.        Dim splittedCols As IEnumerable(Of IEnumerable(Of Integer)) =
  4.            From index As Integer In Enumerable.Range(0, CInt(Math.Ceiling(mainCol.Count() / parts)))
  5.            Select mainCol.Skip(index * parts).Take(parts)

Y ahora, ¿que estás intentando hacer, unirla de nuevo?.

(Esto sería una forma rebuscada y poco optimizada, no se me ocurre nada mejor ahora mismo usando LINQ, pero puedes optimizarlo usando un FOR corriente de toda la vida, no ForEach)
Código
  1.        ' Las 8 colecciones de 4 elementos cada una, unidas en una sola colección:
  2.        Dim joinedCol As IEnumerable(Of Integer) = {}
  3.        splittedCols.ToList.ForEach(Sub(col As IEnumerable(Of Integer))
  4.                                        joinedCol = joinedCol.Concat(col)
  5.                                    End Sub)

Código
  1. ListBox1.Items.AddRange(joinedCol.Cast(Of Object)().ToArray)

PD: Intenta ser específico.

Saludos!
« Última modificación: 8 Marzo 2015, 10:37 am por Eleкtro » En línea

luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Otra de las mias jejje traspasar datos condicionados de una variable a otras
« Respuesta #9 en: 8 Marzo 2015, 12:50 pm »

Tienes la colección estática y principal, con nombre 'mainCol'.

Código
  1.        ' La colección principal.
  2.        Dim mainCol As IEnumerable(Of Integer) =
  3.            {
  4.                1, 2, 3, 4,
  5.                5, 6, 10, 15,
  6.                20, 22, 24, 25,
  7.                30, 35, 45, 47,
  8.                50, 54, 57, 58,
  9.                60, 67, 68, 69,
  10.                70, 71, 75, 77,
  11.                79, 80
  12.            }

Tienes la colección principal, dividida en una colección que contiene colecciones de 4 elementos (total: 8 sub-colecciones), con nombre 'splittedCols'.

Código
  1.        ' La colección principal, dividida en una colección que contiene colecciones de 4 elementos (total: 8 colecciones).
  2.        Dim parts As Integer = 4
  3.        Dim splittedCols As IEnumerable(Of IEnumerable(Of Integer)) =
  4.            From index As Integer In Enumerable.Range(0, CInt(Math.Ceiling(mainCol.Count() / parts)))
  5.            Select mainCol.Skip(index * parts).Take(parts)

Y ahora, ¿que estás intentando hacer, unirla de nuevo?.

(Esto sería una forma rebuscada y poco optimizada, no se me ocurre nada mejor ahora mismo usando LINQ, pero puedes optimizarlo usando un FOR corriente de toda la vida, no ForEach)
Código
  1.        ' Las 8 colecciones de 4 elementos cada una, unidas en una sola colección:
  2.        Dim joinedCol As IEnumerable(Of Integer) = {}
  3.        splittedCols.ToList.ForEach(Sub(col As IEnumerable(Of Integer))
  4.                                        joinedCol = joinedCol.Concat(col)
  5.                                    End Sub)

Código
  1. ListBox1.Items.AddRange(joinedCol.Cast(Of Object)().ToArray)

PD: Intenta ser específico.

Saludos!


Funciona bien pero :

 Pregunta  " Y ahora, ¿que estás intentando hacer, unirla de nuevo? " NO  jejej si todavía no he logrado hacer lo que en principio quería hacer, que era dividir la colección principal en variables con cuatro números  cada una para yo después con cada variable con los números asignados poder concatenar las que yo quiera entre ellas y mostrar ese resultado en un listbox

variable principal con números

Código
  1. Dim mainCol As IEnumerable(Of Integer) =
  2.            {
  3.                1, 2, 3, 4,
  4.                5, 6, 10, 15,
  5.                20, 22, 24, 25,
  6.                30, 35, 45, 47,
  7.                50, 54, 57, 58,
  8.                60, 67, 68, 69,
  9.                70, 71, 75, 77,
  10.                79, 80
  11.            }




cada cuatro números se la asignamos a una variable


 variable1 =1 2 3 4
 variable2 = 5 6 10 15
 variable3 = 20 22 24 24
etec etec


mostrar variable1  en  listbox1
mostrar variable2  en listbox2

Gracias  Elektro por tu ayuda y como me pediste mas especifico jejej



Luis
















En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines