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

 

 


Tema destacado:


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


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Formar pares de numeros
« en: 1 Octubre 2015, 09:47 am »

Hola a todos de nuevo (tiempo sin preguntar ) seguro alguno me estrañaria jejeje   :silbar:

Bien quiero formar pares de numeros que tengo en una variable

esta variable tiene longitud que varia pueden ser cualquier cantidad hasta 10 numeros

ejemplo

0,1,2,3,4,5,6,7,8,9

y nesecito formarlos de esta manera

01
02
03
04
05
06
07
08
09

10
12
13
14
15
16
17
18
19  y haci con todos los demas numeros y pasarlos a otra variable

la varaiable que estoy usando es esta

Código
  1. Dim pru As IEnumerable(Of Integer) =


Saludos
Luis






« Última modificación: 2 Octubre 2015, 05:32 am por luis456 » En línea

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

Mensajes: 9.788



Ver Perfil
Re: Formar pares de numeros
« Respuesta #1 en: 1 Octubre 2015, 11:19 am »

Hola Luis

No se entiende muy bien lo que necesitas, pero si no me equivoco lo que quieres hacer es añadir ceros a la izquierda a los números menores de 10, para que estos formen una logintud de 2 caracteres, par.

Código
  1. Dim valuesInt As IEnumerable(Of Integer) =
  2.    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
  3.  
  4. Dim valuesStr As IEnumerable(Of String) =
  5.    From value As Integer In valuesInt
  6.    Select CStr(value).PadLeft(totalWidth:=2, paddingChar:="0"c)
  7.  
  8. Console.WriteLine(String.Join(", ", valuesStr))

Resultado de ejecución:
Citar
01, 02, 03, 04, 05, 06, 07, 08, 09, 10

Saludos


« Última modificación: 1 Octubre 2015, 11:21 am por Eleкtro » En línea

luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Formar pares de numeros
« Respuesta #2 en: 1 Octubre 2015, 11:36 am »

Hola Luis

No se entiende muy bien lo que necesitas, pero si no me equivoco lo que quieres hacer es añadir ceros a la izquierda a los números menores de 10, para que estos formen una logintud de 2 caracteres, par.

Código
  1. Dim valuesInt As IEnumerable(Of Integer) =
  2.    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
  3.  
  4. Dim valuesStr As IEnumerable(Of String) =
  5.    From value As Integer In valuesInt
  6.    Select CStr(value).PadLeft(totalWidth:=2, paddingChar:="0"c)
  7.  
  8. Console.WriteLine(String.Join(", ", valuesStr))

Resultado de ejecución:
Saludos


Hola elektro gusto en saludarte :)


no es lo que busco jejej . es formar o combinar numeros con numeros

estos son los numeros que tengo en la variable y debo de combinarlos entre ellos formando parejas de dos digitos

1, 2, 3, 4, 5, 6, 7, 8, 9, 10

salida
puse cero por constumbre :(

1
2
3
4
5
6
7
8
9


ahora tomamos el numero 1 y lo combinamos con los demas numeros
12
13
14
15
16
17
18
19
 
seguimos con el numero 2
21
23
24
25
26
27
28
29

seguimos con el tres
31
32
34
35
36
37
38
39

Y haci hasta acabar con el ultimo numero de la secuencia o sea el 9

Ya me habia desacostumbrado a explicarme mejor jejej

Luis







En línea

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

Mensajes: 9.788



Ver Perfil
Re: Formar pares de numeros
« Respuesta #3 en: 1 Octubre 2015, 12:32 pm »

Más bien parecen permutaciones, pero sigue sin estar claro y sabes que la ausencia de información esencial me cabrea, da los detalles necesarios, no me hagas tener que escribir o explicar 20 códigos distintos por no saber los detalles suficientes del algoritmo, ¿que pasa si el numero es 10, o 152, o 25095, o 123456789?, ¿qué se debe hacer entonces?.

No explicaré el código hasta que me puedas confirmar si es correcto así, pero si no entiendes algo de este código, pregunta:
Código
  1. Dim valuesInt As IEnumerable(Of Integer) =
  2.    {1, 3, 4, 6, 2, 5, 8, 7, 9, 10}
  3.  
  4. Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) =
  5.    From value As Integer In valuesInt
  6.    Select New KeyValuePair(Of Integer, IEnumerable(Of Integer))(
  7.           key:=value,
  8.           value:=From index As Integer In Enumerable.Range(1, 9)
  9.                  Where index <> Integer.Parse(CStr(value).Last)
  10.                  Select CInt(value & index))
  11.  
  12. For Each pair As KeyValuePair(Of Integer, IEnumerable(Of Integer)) In pairs
  13.  
  14.    Console.WriteLine(String.Format("Key: {0,-4} Values: {1}", pair.Key, String.Join(", ", pair.Value)))
  15.  
  16. Next pair


Resultado de ejecución:
Citar
Key: 1    Values: 12, 13, 14, 15, 16, 17, 18, 19
Key: 3    Values: 31, 32, 34, 35, 36, 37, 38, 39
Key: 4    Values: 41, 42, 43, 45, 46, 47, 48, 49
Key: 6    Values: 61, 62, 63, 64, 65, 67, 68, 69
Key: 2    Values: 21, 23, 24, 25, 26, 27, 28, 29
Key: 5    Values: 51, 52, 53, 54, 56, 57, 58, 59
Key: 8    Values: 81, 82, 83, 84, 85, 86, 87, 89
Key: 7    Values: 71, 72, 73, 74, 75, 76, 78, 79
Key: 9    Values: 91, 92, 93, 94, 95, 96, 97, 98
Key: 10   Values: 101, 102, 103, 104, 105, 106, 107, 108, 109


Saludos!
« Última modificación: 1 Octubre 2015, 13:00 pm por Eleкtro » En línea

luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Formar pares de numeros
« Respuesta #4 en: 1 Octubre 2015, 13:17 pm »

Bien trato de hacerme entender
 
" ¿que pasa si el numero es 10, o 152, o 25095, o 123456789?, ¿qué se debe hacer entonces?. "

los numeros no pasan nunca de 10 y  oscilan entre esa cantidad entre 1 y 9 
entonces la  :

" Key: 10   Values: 101, 102, 103, 104, 105, 106, 107, 108, 109 "  <---- no debe salir ya que lo maximo  es hasta el 09 

como lo pusiste esta bien hasta el numero 98 .


Realmente los numeros son desde el 01 hasta el 09 otro despieste mio al poner 10 ;(  suelo enredarme mucho con otras cosas,
pero conte 10 porque faltan estos numeros  se cuentan tambien pero asi :

esto deberia quedar de esta forma

Key: 0   Values:  01  02  03  04  05 06 07 08 09
Key: 1    Values: 12, 13, 14, 15, 16, 17, 18, 19
Key: 3    Values: 31, 32, 34, 35, 36, 37, 38, 39
Key: 4    Values: 41, 42, 43, 45, 46, 47, 48, 49
Key: 6    Values: 61, 62, 63, 64, 65, 67, 68, 69
Key: 2    Values: 21, 23, 24, 25, 26, 27, 28, 29
Key: 5    Values: 51, 52, 53, 54, 56, 57, 58, 59
Key: 8    Values: 81, 82, 83, 84, 85, 86, 87, 89
Key: 7    Values: 71, 72, 73, 74, 75, 76, 78, 79
Key: 9    Values: 91, 92, 93, 94, 95, 96, 97, 98




saludos
luis




En línea

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

Mensajes: 9.788



Ver Perfil
Re: Formar pares de numeros
« Respuesta #5 en: 1 Octubre 2015, 13:41 pm »

Bien, si según dices no hay número mayor de 9 en el array inicial, entonces todo perfecto con el último código que te puse, ¿no? :P

...Solo que si el array inicial contiene un 0, entonces deberás devolver uno de strings para formatear los ceros, y de paso podemos evitar castings innecesarios:

Lo que hago es, por cada valor de la colección de origen (ej: {1,5,3,6,7,2,9,4,0}) recorro el rango del 1 al 9 ({1,2,3,4,5,6,7,8,9}), y los voy uniendo en un string con el valor inciial (ej: 1&2="12", 1&3="13", así hasta el 9), excluyendo el valor que sea igual, es decir, si número de rango=1 y número de origen=1, entonces no juntar 1&1 para obtener el string "11".

El poder de LINQ xD.
Código
  1. Public Shared Function Test(ByVal col As IEnumerable(Of Integer)) As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of String)))
  2.  
  3.    If (col.Max >= 10) Then
  4.        Throw New ArgumentException(paramName:="col", message:="Maximum value samaller than 10 is required.")
  5.  
  6.    Else
  7.        Return From value As Integer In col
  8.               Select New KeyValuePair(Of Integer, IEnumerable(Of String))(
  9.                      key:=value,
  10.                      value:=From index As Integer In Enumerable.Range(1, 9)
  11.                             Where (index <> value)
  12.                             Select (value & index))
  13.    End If
  14.  
  15. End Function

+

Código
  1. Dim values As IEnumerable(Of Integer) =
  2.    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  3.  
  4. For Each pair As KeyValuePair(Of Integer, IEnumerable(Of String)) In Test(values)
  5.  
  6.    Console.WriteLine(String.Format("Key: {0,-4} Values: {1}",
  7.                                    pair.Key, String.Join(", ", pair.Value)))
  8.  
  9. Next pair

Resultado de ejecución:
Cita de: Consola
Key: 0    Values: 01, 02, 03, 04, 05, 06, 07, 08, 09
Key: 1    Values: 12, 13, 14, 15, 16, 17, 18, 19
Key: 2    Values: 21, 23, 24, 25, 26, 27, 28, 29
Key: 3    Values: 31, 32, 34, 35, 36, 37, 38, 39
Key: 4    Values: 41, 42, 43, 45, 46, 47, 48, 49
Key: 5    Values: 51, 52, 53, 54, 56, 57, 58, 59
Key: 6    Values: 61, 62, 63, 64, 65, 67, 68, 69
Key: 7    Values: 71, 72, 73, 74, 75, 76, 78, 79
Key: 8    Values: 81, 82, 83, 84, 85, 86, 87, 89
Key: 9    Values: 91, 92, 93, 94, 95, 96, 97, 98

Recordemos tus expectativas:
Key: 0    Values: 01, 02, 03, 04, 05, 06, 07, 08, 09
Key: 1    Values: 12, 13, 14, 15, 16, 17, 18, 19
Key: 2    Values: 21, 23, 24, 25, 26, 27, 28, 29
Key: 3    Values: 31, 32, 34, 35, 36, 37, 38, 39
Key: 4    Values: 41, 42, 43, 45, 46, 47, 48, 49
Key: 5    Values: 51, 52, 53, 54, 56, 57, 58, 59
Key: 6    Values: 61, 62, 63, 64, 65, 67, 68, 69
Key: 7    Values: 71, 72, 73, 74, 75, 76, 78, 79
Key: 8    Values: 81, 82, 83, 84, 85, 86, 87, 89
Key: 9    Values: 91, 92, 93, 94, 95, 96, 97, 98

Saludos
« Última modificación: 1 Octubre 2015, 13:56 pm por Eleкtro » En línea

luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Formar pares de numeros
« Respuesta #6 en: 1 Octubre 2015, 14:05 pm »

Asi me funciona  ;-)


Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.        Dim valuesInt As IEnumerable(Of Integer) =
  5.    {0, 1, 3, 4, 6, 2, 5, 8, 7, 9}
  6.  
  7.        Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) =
  8.            From value As Integer In valuesInt
  9.            Select New KeyValuePair(Of Integer, IEnumerable(Of Integer))(
  10.                   key:=value,
  11.                   value:=From index As Integer In Enumerable.Range(1, 9)
  12.                          Where index <> Integer.Parse(CStr(value).Last)
  13.                          Select CInt(value & index))
  14.  
  15.        For Each pair As KeyValuePair(Of Integer, IEnumerable(Of Integer)) In pairs
  16.  
  17.  
  18.            ListBox1.Items.Add(String.Format("Key: {0,-4} Values: {1}", pair.Key, String.Join(", ", pair.Value)))
  19.  
  20.        Next pair
  21.    End Sub
  22. End Class  


Gracias elektro :)

Luis

En línea

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

Mensajes: 9.788



Ver Perfil
Re: Formar pares de numeros
« Respuesta #7 en: 1 Octubre 2015, 14:35 pm »

De nada, pero déjame hacerte un consejo, ¿sabes lo que estaría muy bien que hagas?, un módulo donde definir todas esas funciones para tus propósitos, que seguro son muchas funciones ya en todo este tiempo... y así, aparte de reducir código, no llenarías tanto código para volverlo un código spaghetti.

Hazme caso, no se si aceptarás mi sugerencia, en caso de que lo hagas no se si al principio pensarás que no te vale la pena (por que creo que te cuesta bastante escribir xD), pero a la larga si, sobre todo para la depuración de posibles fallos, joder, que ahora mismo lo tienes todo mezclao por todos laos.

Incluso podrías crear extensiones de método para ganar mayor simplificación de código.

Te lo digo simplemente como una sugerencia para mejorar tus hábitos de programación, puedes tomarla o ignorarla.


Un ejemplo inicial:
Código
  1. Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of String))) =
  2.    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.GetPairs()
  3.  
  4. For Each pair As KeyValuePair(Of Integer, IEnumerable(Of String)) In pairs
  5.  
  6.    ListBox1.Items.Add(String.Format("Key: {0,-4} Values: {1}", pair.Key, String.Join(", ", pair.Value)))
  7.  
  8. Next pair

+

Código
  1. Imports System
  2. Imports System.Collections.Generic
  3. Imports System.Linq
  4. Imports System.Runtime.CompilerServices
  5.  
  6. Public Module IEnumerableExtensions
  7.  
  8.    ''' ----------------------------------------------------------------------------------------------------
  9.    ''' <summary>
  10.    ''' Descripción de lo que hace esta función.
  11.    ''' </summary>
  12.    ''' ----------------------------------------------------------------------------------------------------
  13.    ''' <param name="sender">
  14.    ''' La colección de origen.
  15.    ''' </param>
  16.    ''' ----------------------------------------------------------------------------------------------------
  17.    ''' <returns>
  18.    ''' Descripción delo que devuelve esta función.
  19.    ''' </returns>
  20.    ''' ----------------------------------------------------------------------------------------------------
  21.    ''' <exception cref="ArgumentException">
  22.    ''' El valor máximo de la colección debe ser un valor inferior a 10.;col
  23.    ''' </exception>
  24.    ''' ----------------------------------------------------------------------------------------------------
  25.    <Extension>
  26.    <DebuggerHidden>
  27.    <DebuggerStepThrough>
  28.    Public Function GetPairs(ByVal sender As IEnumerable(Of Integer)) As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of String)))
  29.  
  30.        If (sender.Max >= 10) Then
  31.            Throw New ArgumentException(paramName:="col", message:="El valor máximo de la colección debe ser un valor inferior a 10.")
  32.  
  33.        Else
  34.            Return From value As Integer In sender
  35.                   Select New KeyValuePair(Of Integer, IEnumerable(Of String))(
  36.                          key:=value,
  37.                          value:=From index As Integer In Enumerable.Range(1, 9)
  38.                                 Where (index <> value)
  39.                                 Select (value & index))
  40.        End If
  41.  
  42.    End Function
  43.  
  44. End Module

Saludos
« Última modificación: 1 Octubre 2015, 14:42 pm por Eleкtro » En línea

luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Formar pares de numeros
« Respuesta #8 en: 1 Octubre 2015, 14:48 pm »

De nada, pero déjame hacerte un consejo, ¿sabes lo que estaría muy bien que hagas?, un módulo donde definir todas esas funciones para tus propósitos, que seguro son muchas funciones ya en todo este tiempo... y así, aparte de reducir código, no llenarías tanto código para volverlo un código spaghetti.

Hazme caso, no se si aceptarás mi sugerencia, en caso de que lo hagas no se si al principio pensarás que no te vale la pena (por que creo que te cuesta bastante escribir xD), pero a la larga si, sobre todo para la depuración de posibles fallos, joder, que ahora mismo lo tienes todo mezclao por todos laos.

Incluso podrías crear extensiones de método para ganar mayor simplificación de código.

Un ejemplo inicial:

Código
  1. Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of String))) =
  2.    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.GetPairs()
  3.  
  4. For Each pair As KeyValuePair(Of Integer, IEnumerable(Of String)) In pairs
  5.  
  6.    ListBox1.Items.Add(String.Format("Key: {0,-4} Values: {1}", pair.Key, String.Join(", ", pair.Value)))
  7.  
  8. Next pair

+

Código
  1. Imports System
  2. Imports System.Collections.Generic
  3. Imports System.Linq
  4. Imports System.Runtime.CompilerServices
  5.  
  6. Module IEnumerableExtensions
  7.  
  8.    ''' ----------------------------------------------------------------------------------------------------
  9.    ''' <summary>
  10.    ''' Descripción de lo que hace esta función.
  11.    ''' </summary>
  12.    ''' ----------------------------------------------------------------------------------------------------
  13.    ''' <param name="sender">
  14.    ''' La colección de origen.
  15.    ''' </param>
  16.    ''' ----------------------------------------------------------------------------------------------------
  17.    ''' <returns>
  18.    ''' Descripción delo que devuelve esta función.
  19.    ''' </returns>
  20.    ''' ----------------------------------------------------------------------------------------------------
  21.    ''' <exception cref="ArgumentException">
  22.    ''' El valor máximo de la colección debe ser un valor inferior a 10.;col
  23.    ''' </exception>
  24.    ''' ----------------------------------------------------------------------------------------------------
  25.    <Extension>
  26.    <DebuggerHidden>
  27.    <DebuggerStepThrough>
  28.    Public Function GetPairs(ByVal sender As IEnumerable(Of Integer)) As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of String)))
  29.  
  30.        If (sender.Max >= 10) Then
  31.            Throw New ArgumentException(paramName:="col", message:="El valor máximo de la colección debe ser un valor inferior a 10.")
  32.  
  33.        Else
  34.            Return From value As Integer In sender
  35.                   Select New KeyValuePair(Of Integer, IEnumerable(Of String))(
  36.                          key:=value,
  37.                          value:=From index As Integer In Enumerable.Range(1, 9)
  38.                                 Where (index <> value)
  39.                                 Select (value & index))
  40.        End If
  41.  
  42.    End Function
  43.  
  44. End Module

Saludos


Sabes que si acepto consejos jejej y el que no lo haga esta frito jeje lo de escribir mucho ya sabes ... Yo poco ... no mentira eso que me dices lo hacia ya en Foxpro, era un archivo de todas las rutinas que despues yo llamaba desde el prg principal con un selet ,pero ya sabes que ahora todo me cuesta mas y me enredo mucho  y si a duras penas voy con esto . no tendria ni idea como llamar esas funciones desde el archivo principal tratere de irme empapando con eso :)

Y gracias muchas gracias por todo :)

Luis



En línea

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


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Formar pares de numeros
« Respuesta #9 en: 1 Octubre 2015, 16:26 pm »

 Habia un detalle pero lo resolvi



value:=From index As Integer In Enumerable.Range(1, 9) <--me tomaba estos valores

value:=From index As Integer In valuesInt  <-------corregido :)


luis
En línea

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

Ir a:  

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