none
Como mostrar em uma label em ordem crescente números que estão em variaveis? RRS feed

  • Pergunta

  • Bom dia!

    Tenho 15 variáveis (Num1, Num2, Num3, Num4..... até Num15) do tipo Integer e cada uma vai obter um determinado número. Depois ao apertar no button1, preciso que seja mostrado em uma label1 os números que estão em cada uma das variáveis só que esses números precisam estar em ordem crescentes e separados por virgulas.

    Para mostrar os números estou usando esse código:

    Label1.Text = Num1 & ", " & Num2 & ", " & Num3 & ", " & Num4 & ", " & Num5 & ", " & Num6 & ", " & Num7 & ", " & Num8 & ", " & Num9 & ", " & Num10 & ", " & Num11 & ", " & Num12 & ", " & Num13 & ", " & Num14 & ", " & Num15

    Esse código esta funcionando bem, mas não mostra os números na ordem crescente. Que é o que eu preciso fazer.

    Obrigado desde já!

    sexta-feira, 6 de março de 2015 15:35

Respostas

  • Olá Edison!

     Vou postar aqui uma solução possível, mas escrita em C#. Provavelmente você terá de fazer algumas adaptações, mas a ideia é jogar os dados destas variáveis para um array ou list, e ordená-los via Linq (até onde sei, o VB.Net trabalha com Linq também). Só não tenho certeza se existe o string.Join.

    int num1, num2, num3, num4, num5;
    
    num1 = 10;
    num2 = 7;
    num3 = 9;
    num4 = 4;
    num5 = 11;
    
    string str = string.Join(", ", string.Format("{0}|{1}|{2}|{3}|{4}", num1, num2, num3, num4, num5).Split(new char[]{'|'}).OrderBy(i => Convert.ToInt32(i)));
    
    // O resultado disto é a variável str assim: "4, 7, 9, 10, 11"

    Fica aí a dica, ou pelo menos uma ideia a ser adaptada à sua realidade. Espero que ajude.

    Bom trabalho!

    • Marcado como Resposta Edison Luis sexta-feira, 6 de março de 2015 20:47
    sexta-feira, 6 de março de 2015 16:46

Todas as Respostas

  • Olá Edison!

     Vou postar aqui uma solução possível, mas escrita em C#. Provavelmente você terá de fazer algumas adaptações, mas a ideia é jogar os dados destas variáveis para um array ou list, e ordená-los via Linq (até onde sei, o VB.Net trabalha com Linq também). Só não tenho certeza se existe o string.Join.

    int num1, num2, num3, num4, num5;
    
    num1 = 10;
    num2 = 7;
    num3 = 9;
    num4 = 4;
    num5 = 11;
    
    string str = string.Join(", ", string.Format("{0}|{1}|{2}|{3}|{4}", num1, num2, num3, num4, num5).Split(new char[]{'|'}).OrderBy(i => Convert.ToInt32(i)));
    
    // O resultado disto é a variável str assim: "4, 7, 9, 10, 11"

    Fica aí a dica, ou pelo menos uma ideia a ser adaptada à sua realidade. Espero que ajude.

    Bom trabalho!

    • Marcado como Resposta Edison Luis sexta-feira, 6 de março de 2015 20:47
    sexta-feira, 6 de março de 2015 16:46
  • Ficaria dessa maneira aqui:

    Private Sub button1_Click(sender As Object, e As EventArgs)
    	Dim ordem As String = Nothing
    	Dim numeros As New List(Of Integer)()
    	numeros.AddRange(New Integer() {10, 11, 12, 5, 20, 85, _
    		60, 100, 1})
    
    	'Ordena os numeros
    	numeros.Sort()
    	For Each item As Integer In numeros
    		'Atribui a string
    		ordem += item + ","
    	Next
    	Label1.Text = ordem
    End Sub


    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel


    • Editado Mr. GMSOFT sexta-feira, 6 de março de 2015 17:17
    sexta-feira, 6 de março de 2015 17:17
  • Boa tarde Mr. GMSOFT!

    No meu projeto coloquei o seu código para testar dessa forma:

    Private Sub button1_Click(sender As Object, e As EventArgs) Dim ordem As String = Nothing Dim numeros As New List(Of Integer)() numeros.AddRange(New Integer() {Num1, Num2, Num3, Num4, Num5, Num, Num7, Num8, Num9, Num10, Num11, Num12, Num13, Num14, Num15}) 'Ordena os numeros numeros.Sort() For Each item As Integer In numeros 'Atribui a string ordem += item + "," Next Label1.Text = ordem End Sub

    A única coisa que mudei foi trocar os números pelas variáveis que contem os valores que preciso.

    Mas funcionou :( . Não apresenta nenhuma mensagem de erro ao executar o projeto e nem no código mas também não mostra os números na label. Será que foi por causa que troquei os números por variáveis (que são do tipo Integer)

    Obrigado pela sua atenção!

    sexta-feira, 6 de março de 2015 20:37
  • Verifica se suas variáveis realmente possuem valores, há não esquece de criar o evento click para seu botão, caso tenha copiado o meu código completo e colocado no botão não ira funcionar por que o evento não existe.



    Teste primeiro o meu código depois o seu com variáveis.

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel



    • Editado Mr. GMSOFT sexta-feira, 6 de março de 2015 20:46
    sexta-feira, 6 de março de 2015 20:42
  • Boa tarde!

    Obrigado Rodrigo! Deu certo, era isso mesmo que eu precisa. Converti o código para VB.NET e fiz umas modificações para mostrar as 15 variáveis e ficou assim:

                Dim str As String = String.Join(", ", String.Format("{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|{9}|{10}|{11}|{12}|{13}|{14}", Num1, Num2, Num3, Num4, Num5, Num6, Num7, Num8, Num9, Num10, Num11, Num12, Num13, Num14, Num15).Split(New Char() {"|"c}).OrderBy(Function(i) Convert.ToInt32(i)))
                LblNumeros1.Text = str

    Obrigado pela atenção!

    sexta-feira, 6 de março de 2015 20:46
  • Boa tarde Mr. GMSOFT!

    Obrigado mais uma vez por sua atenção, mas a resposta do Rodrigo funcionou para mim.


    • Editado Edison Luis sexta-feira, 6 de março de 2015 20:48
    sexta-feira, 6 de março de 2015 20:48