Autor
|
Tema: De regreso con mis temas jejje ,saltar un espacio en arreglo (Leído 4,953 veces)
|
luis456
Desconectado
Mensajes: 548
|
Hola a todos en un arreglo de numeros de x cantidad de numeros, siempre el famoso 01 al 99  yo formo grupos de numeros de 10 numeros concatenando splist o variables de dos numeros cada uno de ese arreglo de esta manera: Dim Bz1 As IEnumerable(Of Integer) = ( From Value As Integer In split(1).Concat(split(2).Concat(split(3)).Concat(split(4)).Concat(split(5))) Where (Value <= MAX AndAlso Value > 0)).Distinct Dim Sl1 As IEnumerable(Of Integer) = Bz1 Dim SM1 As List(Of Integer) = Bz1.toList SM1.Sort() Me.ListBox2.Items.AddRange((From value As Integer In SM1 Where value <> 0).Cast(Of Object).ToArray)
Bien esto funciona bien el problema que quiero resolver es que tiene correlatividad de numeros. arreglo principal ( 01 02 03 04 05 06 07 08 09 10 ....................99) este codigo muestra este resultado 01 02 03 04 05 06 07 08 09 10 Porque al ordenarse el arreglo los splits o variables enpiezan desde el principio del arreglo split(1) = 01 02 split(2) = 03 04 split(3) = 05 06 split(4) = 07 08 split(5) = 09 10 estos split los saco de esta funcion que toma los valores del arreglo principal Dim split As IEnumerable(Of IEnumerable(Of Integer)) = SplitIntoParts (collection: =alia1, amount: =2, fillEmpty: =True)
en definitiva lo que nesecito es hacer saltos de numeros intermedios de los numeros contenidos en los split ejemplo ahora es de esta forma split(1) = 01 02 split(2) = 03 04 split(3) = 05 06 split(4) = 07 08 split(5) = 09 10 ****************** y lo nesecito de esta forma split(1) = 01 03 split(2) = 02 04 split(3) = 05 07 split(4) = 06 08 split(5) = 08 10 Bueno antes de preguntar he usado take,skip sin resultados  con la clausula Where no se plantear el problema claro esta que si volvemos a unir los split como estan ahora y despues, se formaria la misma combinacion pero lo puse a si para el ejemplo ya que las concatenaciones cambian de forma que haga otras numeraciones  Luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.697
|
Puedes utilizar un For con un salto de elementos, asignando un valor al keyword opcional Step. Ejemplos: For value As Integer = 0 To 10 Step 2 Next value
Dim values As Integer() = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} For index As Integer = 0 To (values.Count - 1) Step 2 Debug. Write(values (index )) Next index
Ejemplos oficiales: ➢ For...Next Statement (Visual Basic) - MSDNAhora, eso deberías adaptarlo para aplicarlo al código que tengas. Saludos!
|
|
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
A si estaria Bien lo estoy probando pero tengo que quitar unas claves ya que me da conflito o este error pero ya creo saber que tengo que eliminar error No se puede convertir un objeto de tipo '<ConcatIterator>d__71`1[System.String]' al tipo 'System.Collections.Generic.IEnumerable`1[System.Int32]'. esto es lo que he echo  Dim suma = From num In alia1 _ Select num For num As Integer = 0 To 99 Step 2 Dim split As IEnumerable(Of IEnumerable(Of Integer)) = SplitIntoParts (collection: =suma, amount: =2, fillEmpty: =True) Next num
Luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
luis456
Desconectado
Mensajes: 548
|
A si estaria Bien lo estoy probando pero tengo que quitar unas claves ya que me da conflito o este error pero ya creo saber que tengo que eliminar error No se puede convertir un objeto de tipo '<ConcatIterator>d__71`1[System.String]' al tipo 'System.Collections.Generic.IEnumerable`1[System.Int32]'. esto es lo que he echo  Dim suma = From num In alia1 _ Select num For num As Integer = 0 To 99 Step 2 Dim split As IEnumerable(Of IEnumerable(Of Integer)) = SplitIntoParts (collection: =suma, amount: =2, fillEmpty: =True) Next num
Luis elimine el error pero no funciona como quiero, me corta el arreglo  y me deja las combinaciones sin numeros para completar los diez numeros ????? Luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
luis456
Desconectado
Mensajes: 548
|
otro intento pero nunca he liado con esto . y esta funcion me parece que es la que me serviria el operador '<<' no está definido para los tipos 'System.Collections.Generic.List(Of Integer)' y 'Integer'. Dim var As IEnumerable(Of Integer) = {15, 45, 48, 47, 33, 43, 60, 65, 88} Dim shift As Integer = 2 Dim Sl As IEnumerable(Of Integer) = var Dim SM As List(Of Integer) = var.ToList SM <<= shift Me.ListBox2.Items.AddRange((From value As Integer In SM Where value <> 0).Cast(Of Object).ToArray)
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
luis456
Desconectado
Mensajes: 548
|
Gracias, estoy aprendiendo mucho en este foro. Soy novato en esto del .NETSi hay muy buenos profresores en este foro ,algunos medio cascarabias pero bien  jejej en esto de net he aprendido mucho gracias a ellos Luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.697
|
algunos medio cascarabias pero bien  Te estoy leyendo. ¡CASTIGADO!  No, ahora ne serio, muestra el código completo junto a la función SplitIntoParts que parte una coleccion en varias colecciones, que me imagino que será la misma función que escribí una vez para ti, y entonces, solo entonces, explica lo que ocurre y lo que quieres conseguir, aunque creo que el problema está claro, quieres que las colecciones partidas tengan un "salto" de elementos, pero si no muestras el código de la función que utilizas para partir la colección en varias colecciones... . . . Saludos
|
|
« Última modificación: 25 Mayo 2015, 20:40 pm por Eleкtro »
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
Bueno mientras no me jales de las orejas,de las patillas ,no me des con la regla en los dedos ni me pongas de rodillas con una tapas de refrescos jejej como era antes,  bueno aca esta la version cortita  Public Class Form1 ReadOnly MAX As Integer = 99 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim arregloSumasa() As Integer = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21} Dim split As IEnumerable(Of IEnumerable(Of Integer)) = SplitIntoParts (collection: =arregloSumasa, amount: =2, fillEmpty: =True) ' ***************************************************************************************************** Dim Bz990 As IEnumerable(Of Integer) = ( From Value As Integer In split(0).Concat(split(1)).Concat(split(2)).Concat(split(3)).Concat(split(4)) Where (Value <= MAX AndAlso Value > 0)).Distinct Dim Sl990 As IEnumerable(Of Integer) = Bz990 Dim SM990 As List(Of Integer) = Bz990.Take(10).ToList SM990.Sort() Me.ListBox1.Items.AddRange((From value As Integer In SM990 Where value <> 0).Cast(Of Object).ToArray) ' ******************************************************************************************************* 'este codigo ahora ' muestra -------> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ' yo quiero mostrar --> 1, 3, 5, 7, 9, 11,13,15,17, 19 <--- ojo no son numeros pares ni impares, es por posiciones ' yo quiero mostrar --> 2, 4, 6, 8, 10, 12,14,16,18.20 <---estan ordenados para el ejemplo End Sub 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, If((collection. Count() - (index * amount )) > = amount, Concat(From i As Integer In Enumerable. Range(0, amount - (collection. Count() - (index * amount ))) Select DirectCast(Nothing, T)))) End Function
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
luis456
Desconectado
Mensajes: 548
|
Dificil no? que sera para mi ?  Luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.697
|
ejemplo ahora es de esta forma split(1) = 01 02 split(2) = 03 04 split(3) = 05 06 split(4) = 07 08 split(5) = 09 10
****************** y lo nesecito de esta forma split(1) = 01 03 split(2) = 02 04 split(3) = 05 07 split(4) = 06 08 split(5) = 08 10
Ordenamiento por posiciones, ok, ¿y que haces con el 9? ...¿y la repetición del 8?. Se podría desarrollar la idea si no fuese por que cómo siempre no se entiende la mecánica de lo que pretendes hacer... explica por que no está el nueve, por que lo descartas, qué lógica hay detrás de ese sistema de descarte. Saludos!
|
|
« Última modificación: 28 Mayo 2015, 17:11 pm por Eleкtro »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
*.bin; *.cue... ¡El regreso!
« 1 2 »
Software
|
Ðevastador
|
15
|
6,022
|
27 Noviembre 2003, 09:22 am
por AciDarK
|
|
|
TEMAS INTERESANTES, [TEMA DE VISITA OBLIGADA] (temas pegados anteriormente)
« 1 2 »
Electrónica
|
BADBYTE-K
|
16
|
48,384
|
24 Enero 2008, 19:25 pm
por pillo30
|
|
|
iCloud: tu espacio no es tu espacio. Análisis de las condiciones de uso del ....
Noticias
|
wolfbcn
|
0
|
1,162
|
2 Octubre 2014, 14:45 pm
por wolfbcn
|
|
|
Otra de las mias jejje traspasar datos condicionados de una variable a otras
« 1 2 »
.NET (C#, VB.NET, ASP)
|
luis456
|
13
|
5,264
|
8 Marzo 2015, 16:22 pm
por luis456
|
|
|
Saltar linea al dar enter al escribir un arreglo char.
Programación C/C++
|
yan.exe
|
1
|
1,757
|
3 Abril 2017, 14:35 pm
por MAFUS
|
|