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

GeniX

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

Mensagens Recomendadas

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


Ligação para a mensagem
Partilhar noutros sites
Caça

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


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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


Ligação para a mensagem
Partilhar noutros sites
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


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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


Ligação para a mensagem
Partilhar noutros sites
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.


Pedro Martins

Não respondo a duvidas por PM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Andrepereira9

Metes no botão que diz "Calcular"


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Andrepereira9

Mostra o código que tens


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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


Ligação para a mensagem
Partilhar noutros sites
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


Ligação 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 os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.