Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

GeniX

Média de "X" valores mais altos numa Listbox

Mensagens Recomendadas

GeniX    0
GeniX

Boa tarde,

Estou a fazer um trabalho em VB, que consiste em fazer a média de "X" valores mais elevados numa ListBox.

Não estou é a conseguir perceber que código hei-de por no botão "Calcular".

Confesso que não percebo nada de VB, pois estou no curso de Eng. Civil, portanto se pudessem explicar de uma forma simples, agradecia.

Deixo aqui um imagem com o aspecto da janela, caso precisem.

media.jpg

Cumprimentos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
GeniX    0
GeniX

Não precebi o que queres dizer com "valores mais elevados".. O que é suposto ser?

Procurar os valores mais altos da lisbox.

Ex: Imagina que tenho 7 valores na listbox e nessa textbox tenho "3"... ele irá procurar os 3 valores mais altos na listbox e depois fazer a sua média (excluindo assim outros 4 valores).

Cumprimentos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Caça    24
Caça

Podes fazer isso com linq, tipo isto

Dim Lista As New List(Of Integer)
For Each I As Integer In ListBox1.Items
    Lista.Add(I)
Next
For Each A In (From B In Lista Order By B Descending).Take(CInt(TxtValoresMaisAltos.Text))
    MessageBox.Show(A.ToString)
Next

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
GeniX    0
GeniX

Vou te ser sincero... não percebi o que puseste, podes explicar me sff.

Este é o código que tenho relacionado com esta janela:

        Me.Hide()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ListBox1.Items.Add(txt_VALORADD.Text)
        txt_VALORADD.Clear()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_LIMPAR.Click
        ListBox1.Items.Clear()
        txt_MediaVAL.Clear()
        txt_N_elevados.Clear()
        Timer1.Stop()
        ProgressBar1.Value = 0
        Label4.Text = "0 %"
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        ProgressBar1.Increment(10)
        If ProgressBar1.Value = 100 Then
            txt_MediaVAL.Text = 10 'substituir o valor "10" pela media a da listbox
        End If
        Label4.Text = ProgressBar1.Value & " %"
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_calc.Click
        Timer1.Start()
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_RMVALOR.Click
        ListBox1.Items.Remove(ListBox1.SelectedItem)
    End Sub
End Class

Cumprimentos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Caça    24
Caça

Esse código o que faz é passar todos os itens da listbox para uma lista para depois fazer a ordenação e pegar nos mais altos. Esse código deve ser colocado no botão guardar.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
bioshock    170
bioshock

Se ainda tens o mesmo código é normal que não funcione..

Ele quer que tu mostres o código actualizado já com o que te foi sugerido.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
GeniX    0
GeniX
        
Me.Hide()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ListBox1.Items.Add(txt_VALORADD.Text)
        txt_VALORADD.Clear()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_LIMPAR.Click
        ListBox1.Items.Clear()
        txt_MediaVAL.Clear()
        txt_N_elevados.Clear()
        Timer1.Stop()
        ProgressBar1.Value = 0
        Label4.Text = "0 %"
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        ProgressBar1.Increment(10)
        If ProgressBar1.Value = 100 Then
            txt_MediaVAL.Text = 10 'substituir o valor "10" pela media a da listbox
        End If
        Label4.Text = ProgressBar1.Value & " %"
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_calc.Click
        Timer1.Start()
        Dim Lista As New List(Of Integer)
        For Each I As Integer In ListBox1.Items
             Lista.Add(I)
        Next
           For Each A In (From B In Lista Order By B Descending).Take(CInt(TxtValoresMaisAltos.Text))
    MessageBox.Show(A.ToString)
Next
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_RMVALOR.Click
        ListBox1.Items.Remove(ListBox1.SelectedItem)
    End Sub
End Class

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade