Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: luis456 en 18 Enero 2014, 14:06 pm



Título: Como puedo saber los números que faltan dentro del rango ?
Publicado por: luis456 en 18 Enero 2014, 14:06 pm
Como puedo saber los números que faltan dentro del rango ? tengo esta función que recibe los resultados de tres array donde hago unas sumas: y me gustaria mostrar en otro listbox los números que " NO " están dentro de estas sumas. es posible ?


Código
  1. Rango 00 al 99
  2.  
  3. ReadOnly MAX As Integer = 99
  4.  
  5. Dim Rand As New Random
  6.        ' Concateno, y...
  7.        ' Elimino duplicados, y...
  8.        ' Selecciono los números inferiores a MAX, y...
  9.        ' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX.
  10.        Dim Result1 As IEnumerable(Of Integer) =
  11.            (Result1.Concat(Result3).Concat(Result3).
  12.        Distinct.
  13.        Select(Function(Value As Integer)
  14.                   Return If(Value < MAX, Value, Rand.Next(0, MAX))
  15.               End Function))
  16.  
  17.        ' Result = 1, RANDOM, 2, 3, 4, 5, RANDOM, 6, 7, 8, 9, 10, 99
  18.  
  19.        ListBox11.Items.AddRange(Result1.Cast(Of Object).ToArray)


Luis

Edito= no se porque no me sale bien el poner el codigo entre el insert codigo ?


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: luis456 en 18 Enero 2014, 20:22 pm
?????? ni mi amigo Elektro jejjeje


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: Eleкtro en 18 Enero 2014, 20:28 pm
Yo no entiendo muy bien la pregunta "saber los números que faltan dentro del rango".

saludos


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: .:Weeds:. en 19 Enero 2014, 02:58 am
Yo no entiendo muy bien la pregunta "saber los números que faltan dentro del rango".

saludos

Se referirá a los numeros que no esten entre 0 y 99 !!!CREO!!!
Código
  1. ReadOnly MAX As Integer = 99
  2. Select(Function(Value As Integer)
  3.   Return If(Value < MAX, Value, Rand.Next(0, MAX))
  4. End Function))

Hombre pues asi a bote pronto o hace un if con Value > MAX o en el if añades un else para que cualquier otro resultado que no sea Value < MAX. Iba a dejar code pero de los retos se aprende  ;D ;D

Saludos.


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: Eleкtro en 19 Enero 2014, 04:15 am
Se referirá a los numeros que no esten entre 0 y 99 !!!CREO!!!

Aquí no es necesario el sarcasmo, primero habla del rango, pero luego según dice: 'me gustaria mostrar en otro listbox los números que " NO " están dentro de estas sumas', como ves no dice: 'los números que NO están dentro del rango'.

Si tu comprendes lo que significa "un número que no está dentro de una suma", me parece bien, aunque digo yo que si sumas 1+1 todo el resto de números existentes estarán fuera de la suma, así que a dudas poco detalladas prefiero preguntar para estar seguro de lo que quiere.

Saludos


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: luis456 en 19 Enero 2014, 09:44 am
Aquí no es necesario el sarcasmo, primero habla del rango, pero luego según dice: 'me gustaria mostrar en otro listbox los números que " NO " están dentro de estas sumas', como ves no dice: 'los números que NO están dentro del rango'.

Si tu comprendes lo que significa "un número que no está dentro de una suma", me parece bien, aunque digo yo que si sumas 1+1 todo el resto de números existentes estarán fuera de la suma, así que a dudas poco detalladas prefiero preguntar para estar seguro de lo que quiere.

Saludos


Hola

No vi anoche el tema jej

Si Elektro si la función ( pondré corto los números)  me da"  2, 4 ,6,8, 9 " y el rango es de 0 al 10  entonces me faltaría el " 1,3, 5, 7 "  ademas de mostrar "  2, 4 ,6,8, 9 "  también quiero mostrar " 1,3, 5, 7 " pero en otro listbox


Luis





Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: engel lex en 19 Enero 2014, 09:55 am
mi solución seria organizar el array y recorrerlo buscando donde se salta :P


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: Eleкtro en 19 Enero 2014, 17:01 pm
Si Elektro si la función ( pondré corto los números)  me da"  2, 4 ,6,8, 9 " y el rango es de 0 al 10  entonces me faltaría el " 1,3, 5, 7 "  ademas de mostrar "  2, 4 ,6,8, 9 "  también quiero mostrar " 1,3, 5, 7 " pero en otro listbox

Eso es algo facil de hacer ya sea usando un FOR o usando LINQ, pero como no encontré nada en Google para mostrarte diréctamente un ejemplo parecido al problema que describiste, yo mismo hice una función de uso genérico, aquí la tienes:

Cita de: http://foro.elhacker.net/net/libreria_de_snippets_compartan_aqui_sus_snippets-t378770.0.html;msg1913189#msg1913189
Código
  1.  
  2.    ' Get Numbers Not In Range.
  3.    ' ( By Elektro )
  4.    '
  5.    ' Usage Examples:
  6.    '
  7.    ' MsgBox(String.Join(", ", GetNumbersNotInRange({1, 3, 5, 7, 9}, 0, 10).ToArray)) ' Result: 0, 2, 4, 6, 8, 10
  8.    '
  9.    ''' <summary>
  10.    ''' Given a numeric collection, gets all the numbers which are not in a specified range.
  11.    ''' </summary>
  12.    ''' <param name="NumbersInRange">Indicates the numbers collection which are in range.</param>
  13.    ''' <param name="MinRange">Indicates the minimum range.</param>
  14.    ''' <param name="MaxRange">Indicates the maximum range.</param>
  15.    ''' <returns>System.Collections.Generic.IEnumerable(Of System.Int32).</returns>
  16.    Private Function GetNumbersNotInRange(ByVal NumbersInRange As IEnumerable(Of Integer),
  17.                                          ByVal MinRange As Integer,
  18.                                          ByVal MaxRange As Integer) As IEnumerable(Of Integer)
  19.  
  20.        Return From Number As Integer
  21.               In Enumerable.Range(MinRange, MaxRange + 1)
  22.               Where Not NumbersInRange.Contains(Number)
  23.  
  24.    End Function

Ejemplo de uso:

Código
  1.    Private Sub Test(sender As Object, e As EventArgs) Handles MyBase.Shown
  2.  
  3.        Dim NumbersInRange As Integer() = {2, 4, 6, 8, 9}
  4.  
  5.        Dim NumbersNotInRange As Integer() = GetNumbersNotInRange(NumbersInRange, 0, 10).ToArray
  6.  
  7.        MsgBox(String.Join(", ", NumbersNotInRange)) ' Result: 0, 1, 3, 5, 7, 10
  8.  
  9.    End Sub
Saludos


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: .:Weeds:. en 19 Enero 2014, 22:34 pm
Aquí no es necesario el sarcasmo, primero habla del rango, pero luego según dice: 'me gustaria mostrar en otro listbox los números que " NO " están dentro de estas sumas', como ves no dice: 'los números que NO están dentro del rango'.

Si tu comprendes lo que significa "un número que no está dentro de una suma", me parece bien, aunque digo yo que si sumas 1+1 todo el resto de números existentes estarán fuera de la suma, así que a dudas poco detalladas prefiero preguntar para estar seguro de lo que quiere.

Saludos

No era sarcasmo, puse creo (Lo añadi editando el mensaje) por que no estaba seguro  :¬¬ despues de leer el mensaje 3 o 4 veces mas.

Saludos.


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: luis456 en 21 Enero 2014, 16:54 pm
Nada dos dias y nada no logro hacerlo funcionar  :rolleyes:


Código
  1. Public Class Form1
  2.  
  3.    Dim XMax As Short = 99
  4.    Dim Xmin As Short = 0
  5.    Dim x As Integer = 0
  6.    Dim Número As Double
  7.    Private TextBoxes As TextBox() = {Nothing}
  8.    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
  9.    Private _textBox As Object
  10.    Private _getNumbersNotInRange As Object
  11.  
  12.    Private Property ListBox1Count As Integer
  13.    ReadOnly MAX As Integer = 99
  14.    Private Property Calcular As Object
  15.  
  16.    Private Property TextBox(ByVal TextBoxCount As Short) As Object
  17.        Get
  18.            Return _textBox
  19.        End Get
  20.        Set(ByVal value As Object)
  21.            _textBox = value
  22.        End Set
  23.    End Property
  24.  
  25.  
  26.    ReadOnly Property Num1 As Int32
  27.        Get
  28.            Return CInt(TextBox1.Text)
  29.        End Get
  30.    End Property
  31.  
  32.    ReadOnly Property Num2 As Int32
  33.        Get
  34.            Return CInt(TextBox2.Text)
  35.        End Get
  36.    End Property
  37.    ReadOnly Property Num3 As Int32
  38.        Get
  39.            Return CInt(TextBox3.Text)
  40.        End Get
  41.    End Property
  42.  
  43.    Private Property GetNumbersNotInRange(ByVal Result11 As IEnumerable(Of Integer), ByVal Xmin As Integer, ByVal XMax As Integer) As Object
  44.        Get
  45.            Return _getNumbersNotInRange
  46.        End Get
  47.        Set(ByVal value As Object)
  48.            _getNumbersNotInRange = value
  49.        End Set
  50.    End Property
  51.  
  52.  
  53.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  54.  
  55.  
  56.  
  57.        Result1 = {Num1 + 10, Num1 + 20, Num1 + 30} _
  58.                  .Distinct().ToArray ' Elimino duplicados
  59.  
  60.        Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
  61.                  .Distinct().ToArray ' Elimino duplicados
  62.  
  63.        Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
  64.                  .Distinct().ToArray ' Elimino duplicados
  65.  
  66.  
  67.        ' primero concatenas y eliminas duplicados en el primer array:
  68.        Dim Result11 As IEnumerable(Of Integer) =
  69.              (Result1.Concat(Result3).Concat(Result3).
  70.              Distinct).ToArray
  71.  
  72.        ' luego instancias un segundo array que obtiene los números que no están dentro del rango 'Xmin'-'Xmax' del primer array:
  73.        Dim NumbersNotInRange As Integer() =
  74.             GetNumbersNotInRange(Result11, Xmin, XMax).ToArray
  75.  
  76.        ' Y por último reemplazas los números que no están en el rango, en el primer array:
  77.       Result11 =Result11.Select(Function(Value As Integer)
  78.                              ReadOnly If(Value < MAX, Value, Rand.Next(0, MAX))
  79.                   End Function))
  80.  
  81.  
  82.        ' y los añades a los listbox:
  83.        ListBox1.Items.AddRange(Result11.Cast(Of Object).ToArray)
  84.        ListBox2.Items.AddRange(NumbersNotInRange.Cast(Of Object).ToArray)
  85.  
  86.  
  87.    End Sub
  88.  
  89.  
  90. End Class

Luis


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: Legnak en 21 Enero 2014, 22:10 pm
como aun no estoy muy familiarizado con tu sintaxis lo hare a mi manera (espero se entienda xD)
Código
  1.    Dim arregloSumas() As Integer = {10, 15, 20, 25, 30}
  2.    Dim numerosFaltantesdelRango() As Integer = {}
  3.    Dim rango_min As Integer = 0, rango_max As Integer = 99
  4.    Dim tamanio As Integer
  5.    Dim val As Integer
  6.  
  7. For i = rango_min To rango_max
  8.        val = i
  9.        If Array.Exists(arregloSumas, Function(value As Integer) value = val) = False Then 'Compruebo si el valor de i no aparece en el arreglo de las sumas
  10.            tamanio = numerosFaltantesdelRango.Length + 1
  11.            ReDim numerosFaltantesdelRango(tamanio)
  12.            numerosFaltantesdelRango(tamanio) = val 'Agrego el valor al arreglo
  13.        End If
  14.    Next
  15.    ListBox1.Items.AddRange(numerosFaltantesdelRango.Cast(Of Object).ToArray)


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: Eleкtro en 21 Enero 2014, 22:29 pm
Nada dos dias y nada no logro hacerlo funcionar  :rolleyes:

Porfavor, detalles!.

1. Que significa "no funciona", ¿te salta alguna excepción?.

2. Número de linea exacta en el que te salta la excepción junto al mensaje de error y el stacktrace.

saludos!


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: luis456 en 22 Enero 2014, 10:31 am
Porfavor, detalles!.

1. Que significa "no funciona", ¿te salta alguna excepción?.

2. Número de linea exacta en el que te salta la excepción junto al mensaje de error y el stacktrace.

saludos!


Me salta esto " error de sobrecarga porque ninguna seleccion selet se puede llamar a las que se tiene acceso se puede llamar
con estos argumentos "



Código:
 ' primero concatenas y eliminas duplicados en el primer array:
        Dim Result11 As IEnumerable(Of Integer) =
              (Result1.Concat(Result3).Concat(Result3).
              Distinct).ToArray

        ' luego instancias un segundo array que obtiene los números que no están dentro del rango 'Xmin'-'Xmax' del primer array:
        Dim NumbersNotInRange As Integer() =
             GetNumbersNotInRange(Result11, Xmin, XMax).ToArray

        ' Y por último reemplazas los números que no están en el rango, en el primer array:
         Result11 =Result11.Select(Function(Value As Integer)
             ReadOnly If(Value < MAX, Value, Rand.Next(0, MAX))  <-----error de sobrecarga porque ninguna seleccion selet se puede llamar a las que se tiene acceso se puede llamar
con estos argumentos
                                        End Function))


        ' y los añades a los listbox:
        ListBox1.Items.AddRange(Result11.Cast(Of Object).ToArray)
        ListBox2.Items.AddRange(NumbersNotInRange.Cast(Of Object).ToArray)

 


Luis








Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: Eleкtro en 22 Enero 2014, 14:19 pm
El código de arriba lo escribí al vuelo, no me di cuenta de un fallo muy grande, en lugar de un Return le puse ReadOnly xD, déjalo asi:

Código
  1. Result11 = Result11.Select(Function(Value As Integer) If(Value < MAX, Value, Rand.Next(0, MAX)))

Y por cierto, esto tal vez quieras revisarlo...:
Citar
Código
  1. (Result1.Concat(Result3).Concat(Result3)

(concatenas dos veces Result3).

Saludos


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: luis456 en 22 Enero 2014, 14:46 pm
El código de arriba lo escribí al vuelo, no me di cuenta de un fallo muy grande, en lugar de un Return le puse ReadOnly xD, déjalo asi:

Código
  1. Result11 = Result11.Select(Function(Value As Integer) If(Value < MAX, Value, Rand.Next(0, MAX)))

Y por cierto, esto tal vez quieras revisarlo...:
(concatenas dos veces Result3).

Saludos

Si elektro lo pille tarde cuando puse el post :) las putas prisas y la presbicia de mis ojos me juegan malas pasadas jejej.ahora pruebo de nuevo a ver


Gracias
Luis



Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: luis456 en 22 Enero 2014, 15:04 pm
seguimos :)

error de resolucion de sobre carga pongo codigo entero


 
Código:
Public Class Form1

    Dim XMax As Short = 99
    Dim Xmin As Short = 0
    Dim x As Integer = 0
    Dim Número As Double
    Private TextBoxes As TextBox() = {Nothing}
    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
    Private _textBox As Object
    Private _getNumbersNotInRange As Object

    Private Property ListBox1Count As Integer
    ReadOnly MAX As Integer = 99
    Private Property Calcular As Object

    Private Property TextBox(ByVal TextBoxCount As Short) As Object
        Get
            Return _textBox
        End Get
        Set(ByVal value As Object)
            _textBox = value
        End Set
    End Property


    ReadOnly Property Num1 As Int32
        Get
            Return CInt(TextBox1.Text)
        End Get
    End Property

    ReadOnly Property Num2 As Int32
        Get
            Return CInt(TextBox2.Text)
        End Get
    End Property
    ReadOnly Property Num3 As Int32
        Get
            Return CInt(TextBox3.Text)
        End Get
    End Property

    Private Property GetNumbersNotInRange(ByVal Result11 As IEnumerable(Of Integer), ByVal Xmin As Integer, ByVal XMax As Integer) As Object
        Get
            Return _getNumbersNotInRange
        End Get
        Set(ByVal value As Object)
            _getNumbersNotInRange = value
        End Set
    End Property


    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

        

        Result1 = {Num1 + 10, Num1 + 20, Num1 + 30} _
                  .Distinct().ToArray ' Elimino duplicados

        Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
                  .Distinct().ToArray ' Elimino duplicados

        Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
                  .Distinct().ToArray ' Elimino duplicados

        

       ' primero concatenas y eliminas duplicados en el primer array:
        Dim Result11 As IEnumerable(Of Integer) =
              (Result1.Concat(Result2).Concat(Result3).
              Distinct)

        ' luego instancias un segundo array que obtiene los números que no están dentro del rango 'Xmin'-'Xmax' del primer array:
        Dim NumbersNotInRange As Integer() =
             GetNumbersNotInRange(Result11, Xmin, XMax).ToArray

        ' Y por último reemplazas los números que no están en el rango, en el primer array:
        Result11 = Result11.Select(Function(Value As Integer) If(Value < MAX, Value, Rand.Next(0, MAX))) <----------------------aca


        ' y los añades a los listbox:
        ListBox1.Items.AddRange(Result11.Cast(Of Object).ToArray)
        ListBox2.Items.AddRange(NumbersNotInRange.Cast(Of Object).ToArray)



    End Sub
End Class


Luis



Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: Eleкtro en 22 Enero 2014, 16:34 pm
seguimos :)
error de resolucion de sobre carga pongo codigo entero

Código:
Result11 = Result11.Select(Function(Value As Integer) If(Value < MAX, Value, Rand.Next(0, MAX))) <----------------------aca 

Veo que has marcado el error en la misma linea ...pero con la modificación que te puse arriba debería funcionar corréctamente.

Esto que dijiste la verdad es que no me sirve de nada:
Citar
error de resolucion de sobre carga

Si puedes modifica el lenguaje de la IDE para mostrar el mensaje de error en Inglés, pero muestra el mensaje completo no como has hecho las dos veces anteriores xD, debes mostrar el tipo de excepción además de los detalles del error y el número de linea donde te salta la excepción.


saludos


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: luis456 en 22 Enero 2014, 17:14 pm
Hola esto es lo que puedo copiar,me remarca todo el codigo que me diste

Código:
 Result11 = Result11.Select(Function(Value As Integer) If(Value < MAX, Value, Rand.Next(0, MAX)))



Citar
Error   2   Error de resolución de sobrecarga porque ninguna de las funciones 'Select' a las que se tiene acceso se puede llamar con estos argumentos:
    Método de extensión 'Public Function Select(Of TResult)(selector As System.Func(Of Integer, Integer, TResult)) As System.Collections.Generic.IEnumerable(Of TResult)' definido en 'System.Linq.Enumerable': La función anidada no tiene una firma compatible con el delegado 'System.Func(Of Integer, Integer, TResult)'.
    Método de extensión 'Public Function Select(Of TResult)(selector As System.Func(Of Integer, Integer, TResult)) As System.Collections.Generic.IEnumerable(Of TResult)' definido en 'System.Linq.Enumerable': Los tipos de datos de los parámetros de tipo no se pueden inferir de estos argumentos. Este error se puede resolver especificando los tipos de datos explícitamente.
    Método de extensión 'Public Function Select(Of TResult)(selector As System.Func(Of Integer, TResult)) As System.Collections.Generic.IEnumerable(Of TResult)' definido en 'System.Linq.Enumerable': 'Rand' no está declarado. Puede que esté inaccesible debido a su nivel de protección.
    Método de extensión 'Public Function Select(Of TResult)(selector As System.Func(Of Integer, TResult)) As System.Collections.Generic.IEnumerable(Of TResult)' definido en 'System.Linq.Enumerable': Los tipos de datos de los parámetros de tipo no se pueden inferir de estos argumentos. Este error se puede resolver especificando los tipos de datos explícitamente.   C:\Users\Acuario\documents\visual studio 2010\Projects\Preueba\Preueba\Form1.vb   78   20   Preueba


Luis


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: Eleкtro en 22 Enero 2014, 17:28 pm
A simple vista, no hay nada erroneo en la instrucción.

comprueba si la linea que me has mostrado es la misma que hace referencia a esta:
Citar
Código:
Form1.vb   78   

Comprueba que todos los valores que usas en el método de LINQ seán Integers, no longs no shorts no otra cosa, y prueba así, sin especificar el datatype de retorno:
Código
  1. Result11 = Result11.Select(Function(Value) If(Value < MAX, Value, Rand.Next(0, MAX)))

De todas formas aún sigo esperando a que des un maldito detalle sobre el tipo de excepción de la que se trata, si en tiempo de ejecución o un error de compilación, aunque está claro que es de compilación pero bueno... para la próxima vez.

PD: Siempre puedes ponerle un par de breakpoints para inspeccionar más detalládamente los sucesos si se trata de una excepción en tiempo de ejecución.

saludos


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: luis456 en 22 Enero 2014, 17:43 pm
A simple vista, no hay nada erroneo en la instrucción.

comprueba si la linea que me has mostrado es la misma que hace referencia a esta:
Comprueba que todos los valores que usas en el método de LINQ seán Integers, no longs no shorts no otra cosa, y prueba así, sin especificar el datatype de retorno:
Código
  1. Result11 = Result11.Select(Function(Value) If(Value < MAX, Value, Rand.Next(0, MAX)))

De todas formas aún sigo esperando a que des un maldito detalle sobre el tipo de excepción de la que se trata, si en tiempo de ejecución o un error de compilación, aunque está claro que es de compilación pero bueno... para la próxima vez.

PD: Siempre puedes ponerle un par de breakpoints para inspeccionar más detalládamente los sucesos si se trata de una excepción en tiempo de ejecución.

saludos


si elektro hace referencia a

Form1.vb   78


Y el error es en tiempo de compilación


Luis





Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: luis456 en 24 Enero 2014, 16:52 pm
Bien todavia super atascado

No habria una forma de comparar los resultados del array que contiene los resultados
con los numeros del 00 al 99 y que diga cuales faltan ?

Joe pense que esto era facil jejej.

Luis


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: Legnak en 25 Enero 2014, 17:31 pm
Bien todavia super atascado

No habria una forma de comparar los resultados del array que contiene los resultados
con los numeros del 00 al 99 y que diga cuales faltan ?

Joe pense que esto era facil jejej.

Luis
en la respuesta que puse te deje un algoritmo sencillo de como hacer eso, y funciona


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: luis456 en 26 Enero 2014, 18:40 pm
en la respuesta que puse te deje un algoritmo sencillo de como hacer eso, y funciona

Como ya comente en esto soy novato lo mio era el viejo foxpro jejej pongo el codigo pero me error

Código
  1. Public Class Form1
  2.  
  3.    Dim Max As Integer = 99
  4.    Dim Xmin As Integer = 0
  5.    Dim x As Integer = 0
  6.    Dim Número As Double
  7.  
  8.    Private TextBoxes As TextBox() = {Nothing}
  9.    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
  10.    Private _textBox As Object
  11.    Private _getNumbersNotInRange As Object
  12.  
  13.    Private Property ListBox1Count As Integer
  14.  
  15.    Private Property Calcular As Object
  16.  
  17.    Private Property TextBox(ByVal TextBoxCount As Short) As Object
  18.        Get
  19.            Return _textBox
  20.        End Get
  21.        Set(ByVal value As Object)
  22.            _textBox = value
  23.        End Set
  24.    End Property
  25.  
  26.  
  27.    ReadOnly Property Num1 As Int32
  28.        Get
  29.            Return CInt(TextBox1.Text)
  30.        End Get
  31.    End Property
  32.  
  33.    ReadOnly Property Num2 As Int32
  34.        Get
  35.            Return CInt(TextBox2.Text)
  36.        End Get
  37.    End Property
  38.    ReadOnly Property Num3 As Int32
  39.        Get
  40.            Return CInt(TextBox3.Text)
  41.        End Get
  42.    End Property
  43.  
  44.    Private Property GetNumbersNotInRange(ByVal Result11 As IEnumerable(Of Integer), ByVal Xmin As Integer, ByVal XMax As Integer) As Object
  45.        Get
  46.            Return _getNumbersNotInRange
  47.        End Get
  48.        Set(ByVal value As Object)
  49.            _getNumbersNotInRange = value
  50.        End Set
  51.    End Property
  52.  
  53.  
  54.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  55.  
  56.  
  57.  
  58.        Result1 = {Num1 + 10, Num1 + 20, Num1 + 30} _
  59.                  .Distinct().ToArray ' Elimino duplicados
  60.  
  61.        Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
  62.                  .Distinct().ToArray ' Elimino duplicados
  63.  
  64.        Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
  65.                  .Distinct().ToArray ' Elimino duplicados
  66.        ' primero concatenas y eliminas duplicados en el primer array:
  67.  
  68.        Dim Result11 As IEnumerable(Of Integer) =
  69.        (Result1.Concat(Result2).Concat(Result3).
  70.          Distinct)
  71.  
  72.  
  73.        ' Dim arregloSumas() As Integer = {10, 15, 20, 25, 30}
  74.        Dim numerosFaltantesdelRango() As Integer = {}
  75.        Dim rango_min As Integer = 0, rango_max As Integer = 99
  76.        Dim tamanio As Integer
  77.        Dim val As Integer
  78.  
  79.        For i = rango_min To rango_max
  80.            val = i
  81.            If Array.Exists(Result11, Function(value As Integer) value = val) = False Then 'Compruebo si el valor de i no aparece en el arreglo de las sumas
  82.                tamanio = numerosFaltantesdelRango.Length + 1
  83.                ReDim numerosFaltantesdelRango(tamanio)
  84.                numerosFaltantesdelRango(tamanio) = val 'Agrego el valor al arreglo
  85.            End If
  86.        Next
  87.        ListBox1.Items.AddRange(numerosFaltantesdelRango.Cast(Of Object).ToArray)
  88.    End Sub
  89. End Class
  90.  


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: Legnak en 28 Enero 2014, 01:07 am
ahora si funciona  :)
Código
  1. Public Class Form1
  2.  
  3.    Dim Max As Integer = 99
  4.    Dim Xmin As Integer = 0
  5.    Dim x As Integer = 0
  6.    Dim Número As Double
  7.  
  8.    Private TextBoxes As TextBox() = {Nothing}
  9.    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
  10.    Private _textBox As Object
  11.    Private _getNumbersNotInRange As Object
  12.  
  13.    Private Property ListBox1Count As Integer
  14.  
  15.    Private Property Calcular As Object
  16.  
  17.    Private Property TextBox(ByVal TextBoxCount As Short) As Object
  18.        Get
  19.            Return _textBox
  20.        End Get
  21.        Set(ByVal value As Object)
  22.            _textBox = value
  23.        End Set
  24.    End Property
  25.  
  26.  
  27.    ReadOnly Property Num1 As Int32
  28.        Get
  29.            Return CInt(TextBox1.Text)
  30.        End Get
  31.    End Property
  32.  
  33.    ReadOnly Property Num2 As Int32
  34.        Get
  35.            Return CInt(TextBox2.Text)
  36.        End Get
  37.    End Property
  38.    ReadOnly Property Num3 As Int32
  39.        Get
  40.            Return CInt(TextBox3.Text)
  41.        End Get
  42.    End Property
  43.  
  44.    Private Property GetNumbersNotInRange(ByVal Result11 As IEnumerable(Of Integer), ByVal Xmin As Integer, ByVal XMax As Integer) As Object
  45.        Get
  46.            Return _getNumbersNotInRange
  47.        End Get
  48.        Set(ByVal value As Object)
  49.            _getNumbersNotInRange = value
  50.        End Set
  51.    End Property
  52.  
  53.  
  54.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  55.  
  56.  
  57.  
  58.        Result1 = {Num1 + 10, Num1 + 20, Num1 + 30} _
  59.                  .Distinct().ToArray ' Elimino duplicados
  60.  
  61.        Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
  62.                  .Distinct().ToArray ' Elimino duplicados
  63.  
  64.        Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
  65.                  .Distinct().ToArray ' Elimino duplicados
  66.        ' primero concatenas y eliminas duplicados en el primer array:
  67.  
  68.        Dim Result11 As IEnumerable(Of Integer) =
  69.        (Result1.Concat(Result2).Concat(Result3).
  70.          Distinct)
  71.  
  72.  
  73.        ' Dim arregloSumas() As Integer = {10, 15, 20, 25, 30}
  74.        Dim numerosFaltantesdelRango() As Integer = {}
  75.        Dim rango_min As Integer = 0, rango_max As Integer = 99
  76.        Dim tamanio As Integer
  77.        Dim val As Integer
  78.  
  79.  
  80.        Dim test As Integer
  81.        For i = rango_min To rango_max
  82.            val = i
  83.            If Array.Exists(Result11.Cast(Of Object).ToArray, Function(value As Integer) value = val) = False Then 'Compruebo si el valor de i no aparece en el arreglo de las sumas
  84.  
  85.                test += 1
  86.                tamanio = UBound(numerosFaltantesdelRango) + 1
  87.                ReDim Preserve numerosFaltantesdelRango(tamanio)
  88.                numerosFaltantesdelRango(tamanio) = val 'Agrego el valor al arreglo
  89.  
  90.            End If
  91.        Next
  92.  
  93.        ListBox1.Items.AddRange(numerosFaltantesdelRango.Cast(Of Object).ToArray)
  94.  
  95.    End Sub
  96. End Class


Título: Re: Como puedo saber los números que faltan dentro del rango ?
Publicado por: luis456 en 28 Enero 2014, 11:43 am
ahora si funciona  :)
Código
  1. Public Class Form1
  2.  
  3.    Dim Max As Integer = 99
  4.    Dim Xmin As Integer = 0
  5.    Dim x As Integer = 0
  6.    Dim Número As Double
  7.  
  8.    Private TextBoxes As TextBox() = {Nothing}
  9.    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
  10.    Private _textBox As Object
  11.    Private _getNumbersNotInRange As Object
  12.  
  13.    Private Property ListBox1Count As Integer
  14.  
  15.    Private Property Calcular As Object
  16.  
  17.    Private Property TextBox(ByVal TextBoxCount As Short) As Object
  18.        Get
  19.            Return _textBox
  20.        End Get
  21.        Set(ByVal value As Object)
  22.            _textBox = value
  23.        End Set
  24.    End Property
  25.  
  26.  
  27.    ReadOnly Property Num1 As Int32
  28.        Get
  29.            Return CInt(TextBox1.Text)
  30.        End Get
  31.    End Property
  32.  
  33.    ReadOnly Property Num2 As Int32
  34.        Get
  35.            Return CInt(TextBox2.Text)
  36.        End Get
  37.    End Property
  38.    ReadOnly Property Num3 As Int32
  39.        Get
  40.            Return CInt(TextBox3.Text)
  41.        End Get
  42.    End Property
  43.  
  44.    Private Property GetNumbersNotInRange(ByVal Result11 As IEnumerable(Of Integer), ByVal Xmin As Integer, ByVal XMax As Integer) As Object
  45.        Get
  46.            Return _getNumbersNotInRange
  47.        End Get
  48.        Set(ByVal value As Object)
  49.            _getNumbersNotInRange = value
  50.        End Set
  51.    End Property
  52.  
  53.  
  54.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  55.  
  56.  
  57.  
  58.        Result1 = {Num1 + 10, Num1 + 20, Num1 + 30} _
  59.                  .Distinct().ToArray ' Elimino duplicados
  60.  
  61.        Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
  62.                  .Distinct().ToArray ' Elimino duplicados
  63.  
  64.        Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
  65.                  .Distinct().ToArray ' Elimino duplicados
  66.        ' primero concatenas y eliminas duplicados en el primer array:
  67.  
  68.        Dim Result11 As IEnumerable(Of Integer) =
  69.        (Result1.Concat(Result2).Concat(Result3).
  70.          Distinct)
  71.  
  72.  
  73.        ' Dim arregloSumas() As Integer = {10, 15, 20, 25, 30}
  74.        Dim numerosFaltantesdelRango() As Integer = {}
  75.        Dim rango_min As Integer = 0, rango_max As Integer = 99
  76.        Dim tamanio As Integer
  77.        Dim val As Integer
  78.  
  79.  
  80.        Dim test As Integer
  81.        For i = rango_min To rango_max
  82.            val = i
  83.            If Array.Exists(Result11.Cast(Of Object).ToArray, Function(value As Integer) value = val) = False Then 'Compruebo si el valor de i no aparece en el arreglo de las sumas
  84.  
  85.                test += 1
  86.                tamanio = UBound(numerosFaltantesdelRango) + 1
  87.                ReDim Preserve numerosFaltantesdelRango(tamanio)
  88.                numerosFaltantesdelRango(tamanio) = val 'Agrego el valor al arreglo
  89.  
  90.            End If
  91.        Next
  92.  
  93.        ListBox1.Items.AddRange(numerosFaltantesdelRango.Cast(Of Object).ToArray)
  94.  
  95.    End Sub
  96. End Class



Perfecto perfecto  ;-)  ;-)  ;-)

Funciona como quería ¡ muchas gracias por tu ayuda

Luis