none
Determinar el Mayor y Menor

    Question

  • Bueno, Quiero Determinar el Mayor y Menor de una Serie de Números.

    1. En un TextBox indico Cuantos Números Quiero Ingresar

    2. En Otro Textbox digito los numeros que voy a añadir uno a uno (Presionando Enter)  a Un ListBox

    Mi Problema está en que como determino el Número Mayor y Menor que agregue al ListBox.

    Intenté usar el math.max ... y no dio Resulatdo

    Como puedo Hacer o Determinar esto?

     


    Pedro Mata
    Friday, December 31, 2010 1:19 AM

Answers

  • Saludo, para que este codigo te funciones debe utiliza el .Net Framework 3.0 o superior

    Dim av = comboBox1.Items
    Dim list As New List(Of Integer)()
    For Each item As var In av
    	list.Add(Convert.ToInt32(item))
    Next
    label1.Text = list.Max().ToString()

    Si la informacion te fue de Utilidad marcala como util

    Angel R. Jimenez G.
    Software Development
    Santo Domingo
    Republica Dominicana
    • Marked as answer by P. Mata Saturday, January 01, 2011 2:31 AM
    Friday, December 31, 2010 3:34 AM
  • hola

    que version de VS y .net estas usando ?

    lo pregunto proque al solucion de Angel es buena pero no para todas las version de .net, ya que el Max es un metodo de Extension

     

    si solo necesitas el valor mayor de la lista podrias ser algo como esto

    Dim valmayor As Integer = 0

    For Each item As Object In ListBox1.Items

        Dim valor As Integer
        Int32.TryParse(CStr(item), valor)
      
        if valor > valmayor Then
            valmayor = valor
        End If
      
    Next

    txtValorMayor.Text = CStr(valmayor)

     

    este si funciona con todas las versiones de .net

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by P. Mata Saturday, January 01, 2011 2:31 AM
    Friday, December 31, 2010 3:51 AM
  • "Pedro 08" preguntó:

    >  Quiero Determinar el Mayor y Menor de una Serie de Números

    Hola, Pedro:

    Si en los tiempos que estamos todavía continúas utilizando Visual Basic 2002 ó 2003, está bien que utilices la recomendación que te ha efectuado el Sr. Tuttini, y de esa manera sólo obtendrías el mayor número de los existentes en el control ListBox. Tendrías que hacer algo parecido para obtener el menor número.

    Si trabajas con la versión 2.0 del marco de trabajo de .NET (Visual Basic 2005), puedes recorrer el bucle que te ha indicado Angel Jiménez.

    Y si estás usando la versión 3.5 o superior del marco de trabajo de .NET (Visual Basic 2008 ó 2010), puedes utilizar una consulta LINQ para obtener el mayor y el menor número de una serie. Si todos los elementos que añades al control ListBox se pueden convertir a números enteros (Integer), simplemente tendrías que ejecutar lo siguiente:

            ' Devolvemos una consulta ordenada de menor a mayor´.
            '
            Dim query = From item As Integer In ListBox1.Items.Cast(Of Integer)() _
                               Select item _
                               Order By item

            ' El menor número será el primer elemento de la colección
            '
            Dim menorNumero As Integer = query(0)

            ' El mayor número será el último elemento de la colección
            '
            Dim mayorNumero As Integer = query(query.Count - 1)

    También la consulta devuelta podrías asignársela a un objeto del tipo List(Of Integer), para obtener el mismo resultado:

            Dim query = From item As Integer In ListBox1.Items.Cast(Of Integer)()

            Dim lst As List(Of Integer) = query.ToList()

            Dim menorNumero As Integer = lst.Min

            Dim mayorNumero As Integer = lst.Max

    Un saludo y ¡Feliz Año Nuevo!

     


    Enrique Martínez
      [MS MVP - VB]

    • Marked as answer by P. Mata Saturday, January 01, 2011 2:31 AM
    Friday, December 31, 2010 4:47 PM
    Moderator

All replies

  • Saludo, para que este codigo te funciones debe utiliza el .Net Framework 3.0 o superior

    Dim av = comboBox1.Items
    Dim list As New List(Of Integer)()
    For Each item As var In av
    	list.Add(Convert.ToInt32(item))
    Next
    label1.Text = list.Max().ToString()

    Si la informacion te fue de Utilidad marcala como util

    Angel R. Jimenez G.
    Software Development
    Santo Domingo
    Republica Dominicana
    • Marked as answer by P. Mata Saturday, January 01, 2011 2:31 AM
    Friday, December 31, 2010 3:34 AM
  • hola

    que version de VS y .net estas usando ?

    lo pregunto proque al solucion de Angel es buena pero no para todas las version de .net, ya que el Max es un metodo de Extension

     

    si solo necesitas el valor mayor de la lista podrias ser algo como esto

    Dim valmayor As Integer = 0

    For Each item As Object In ListBox1.Items

        Dim valor As Integer
        Int32.TryParse(CStr(item), valor)
      
        if valor > valmayor Then
            valmayor = valor
        End If
      
    Next

    txtValorMayor.Text = CStr(valmayor)

     

    este si funciona con todas las versiones de .net

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marked as answer by P. Mata Saturday, January 01, 2011 2:31 AM
    Friday, December 31, 2010 3:51 AM
  • "Pedro 08" preguntó:

    >  Quiero Determinar el Mayor y Menor de una Serie de Números

    Hola, Pedro:

    Si en los tiempos que estamos todavía continúas utilizando Visual Basic 2002 ó 2003, está bien que utilices la recomendación que te ha efectuado el Sr. Tuttini, y de esa manera sólo obtendrías el mayor número de los existentes en el control ListBox. Tendrías que hacer algo parecido para obtener el menor número.

    Si trabajas con la versión 2.0 del marco de trabajo de .NET (Visual Basic 2005), puedes recorrer el bucle que te ha indicado Angel Jiménez.

    Y si estás usando la versión 3.5 o superior del marco de trabajo de .NET (Visual Basic 2008 ó 2010), puedes utilizar una consulta LINQ para obtener el mayor y el menor número de una serie. Si todos los elementos que añades al control ListBox se pueden convertir a números enteros (Integer), simplemente tendrías que ejecutar lo siguiente:

            ' Devolvemos una consulta ordenada de menor a mayor´.
            '
            Dim query = From item As Integer In ListBox1.Items.Cast(Of Integer)() _
                               Select item _
                               Order By item

            ' El menor número será el primer elemento de la colección
            '
            Dim menorNumero As Integer = query(0)

            ' El mayor número será el último elemento de la colección
            '
            Dim mayorNumero As Integer = query(query.Count - 1)

    También la consulta devuelta podrías asignársela a un objeto del tipo List(Of Integer), para obtener el mismo resultado:

            Dim query = From item As Integer In ListBox1.Items.Cast(Of Integer)()

            Dim lst As List(Of Integer) = query.ToList()

            Dim menorNumero As Integer = lst.Min

            Dim mayorNumero As Integer = lst.Max

    Un saludo y ¡Feliz Año Nuevo!

     


    Enrique Martínez
      [MS MVP - VB]

    • Marked as answer by P. Mata Saturday, January 01, 2011 2:31 AM
    Friday, December 31, 2010 4:47 PM
    Moderator
  • Estoy Utilizando El Visual Basic 2010.

    Gracias Me Sirvieron Las Respuestas.


    Pedro Mata
    Saturday, January 01, 2011 2:26 AM
  • Estoy Utilizando El Visual Basic 2010

    Gracias Me Sirvieron Las Respuestas.


    Pedro Mata
    Saturday, January 01, 2011 2:28 AM
  • Funciona Perfectamente.

     


    Pedro Mata
    Saturday, January 01, 2011 2:49 AM