Oppure

Loading
05/02/10 17:38
albertino
Ciao a tutti, questo è il mio primo post. Avrei bisogno di un aiuto con vb.net express 2008. Ho creato un window form per inserire i voti di una gara di karate.

ho dei valori del tipo: nome, voto, voto_max, voto_min, tutti array contenenti i valori degli atleti.

Fino a quando si tratta di ordinare la classifica per voto uso array.sort(voto, nome) ma nel caso di pari merito dovrei ordinare:

1.prima per voto
2.poi per voto_min

nel caso di ulteriore pari merito

3. per voto_max

Non sono riuscito a trovare una soluzione funzionante, anche perchè questo e il mio primo programma.....

Grazie a tutti
aaa
05/02/10 20:13
XBarboX
puoi fare un piccolo esempio perchè non si capisce...
aaa
05/02/10 21:13
walker93
credo di aver capito...
tu vuoi riordinare il tuo array voto e nel caso ci sono due voti uguali (tipo 6 e 6) che posizioni per primo quello con voto_min più basso o più alto (a seconda di come ti serve)nel caso ci siano voti uguali e voti_min uguali vada a vedere voto_max e faccia uguale come con voto_min
aaa
06/02/10 7:45
Gianluca87
ti suggerisco di legare tutti i valori di un alteta dentro una classe atleta tramite degli attributi... e di gestire i tuoi risultati come List<Atleta>
con linq puoi dargli tutti gli ordinamenti che vuoi
aaa
06/02/10 12:38
albertino
Ok, cerco di chiarire meglio, la classifica dovrebbe essere una cosa del tipo

posizione nome voto voto_min voto_max

1. Pippo 76 35 38
2. Pluto 72 30 Pari merito
3. Tpolino 72 28 Pari merito con voto_min minore

Esattamente come ha detto Walker
Ultima modifica effettuata da albertino 06/02/10 12:39
aaa
06/02/10 20:36
Gianluca87
mi spiego meglio... ad esempio...classe per l'atleta
 public class Atleta
    {
       public int Posizione { get; set; }
       public string Nome { get; set; }
       public int Voto { get; set; }
       public int VotoMax { get; set; }
       public int VotoMin { get; set; }
    }

inserisco un pò di dati...

 List<Atleta> Atleti = new List<Atleta>();
            Atleti.Add(new Atleta()
            {
                Nome = "Pippo1",
                Posizione = 1,
                Voto = 10,
                VotoMax = 100,
                VotoMin = 1
            });
            Atleti.Add(new Atleta()
            {
                Nome = "Pippo2",
                Posizione = 3,
                Voto = 30,
                VotoMax = 80,
                VotoMin = 10
            });
            Atleti.Add(new Atleta()
            {
                Nome = "Pippo3",
                Posizione = 2,
                Voto = 50,
                VotoMax = 90,
                VotoMin = 20
            });

Li ordino con una semplice query linq
var res = 
                    from a in Atleti 
                    orderby a.Posizione, a.Voto,a.VotoMax,a.VotoMin,a.Nome
                    select a;
            List<Atleta> AtletiOrdinati = (List<Atleta>)res.ToList();
aaa
07/02/10 16:42
albertino
Ok spero di avere capito il concetto. Il mio codice ora è


Imports System.Linq

Public Class Form1

    Dim Bob = New Atleta("Bob", 35, 25, 45)
    Dim Joe = New Atleta("Joe", 35, 27, 49)
    Dim Luc = New Atleta("Luc", 33, 22, 42)

    Dim atleti() As Atleta = {Bob, Joe, Luc}


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

        Dim classifica = From d In atleti _
        Select d _
        Order By d.voto, d.VotoMax, d.VotoMin

        For Each d In classifica
            MsgBox(d.nome)
        Next

    End Sub
End Class


Public Class Atleta

    Public _Nome As String
    Public _Voto As Integer
    Public _VotoMax As Integer
    Public _VotoMin As Integer

    Public Sub New(ByVal nome As String, ByVal voto As Integer, ByVal VotoMax As Integer, ByVal VotoMin As Integer)

        _Nome = nome
        _Voto = voto
        _VotoMax = VotoMax
        _VotoMin = VotoMin

    End Sub

    Public ReadOnly Property Nome() As String

        Get
            Return _Nome
        End Get

    End Property

    Public ReadOnly Property voto() As Integer

        Get
            Return _Voto
        End Get

    End Property

    Public ReadOnly Property VotoMax() As Integer

        Get
            Return _VotoMax
        End Get

    End Property

    Public ReadOnly Property VotoMin() As Integer

        Get
            Return _VotoMin
        End Get

    End Property

End Class



Ora il problema è: I miei nomi arrivano da delle TextBox. Come faccio ad adattare

Dim Bob = New Atleta("Bob", 35, 25, 45)

e

Dim atleti() As Atleta = {Bob, Joe, Luc, Gennaro}

per inserire i valori della TextBox ?

Grazie.....
Ultima modifica effettuata da albertino 08/02/10 13:53
aaa
28/02/10 14:17
Gianluca87
Postato originariamente da albertino:

Ok spero di avere capito il concetto. Il mio codice ora è


Imports System.Linq

Public Class Form1

    Dim Bob = New Atleta("Bob", 35, 25, 45)
    Dim Joe = New Atleta("Joe", 35, 27, 49)
    Dim Luc = New Atleta("Luc", 33, 22, 42)

    Dim atleti() As Atleta = {Bob, Joe, Luc}


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

        Dim classifica = From d In atleti _
        Select d _
        Order By d.voto, d.VotoMax, d.VotoMin

        For Each d In classifica
            MsgBox(d.nome)
        Next

    End Sub
End Class


Public Class Atleta

    Public _Nome As String
    Public _Voto As Integer
    Public _VotoMax As Integer
    Public _VotoMin As Integer

    Public Sub New(ByVal nome As String, ByVal voto As Integer, ByVal VotoMax As Integer, ByVal VotoMin As Integer)

        _Nome = nome
        _Voto = voto
        _VotoMax = VotoMax
        _VotoMin = VotoMin

    End Sub

    Public ReadOnly Property Nome() As String

        Get
            Return _Nome
        End Get

    End Property

    Public ReadOnly Property voto() As Integer

        Get
            Return _Voto
        End Get

    End Property

    Public ReadOnly Property VotoMax() As Integer

        Get
            Return _VotoMax
        End Get

    End Property

    Public ReadOnly Property VotoMin() As Integer

        Get
            Return _VotoMin
        End Get

    End Property

End Class



Ora il problema è: I miei nomi arrivano da delle TextBox. Come faccio ad adattare

Dim Bob = New Atleta("Bob", 35, 25, 45)

e

Dim atleti() As Atleta = {Bob, Joe, Luc, Gennaro}

per inserire i valori della TextBox ?

Grazie.....

scusa se rispondo in ritardo ma ho avuto parecchio da fare :rofl:
in anzi tutto
Dim atleti() As Atleta = {Bob, Joe, Luc, Gennaro}
crea un array non una lista...
in vb dovrebbe essere
Dim Atleti As New List(Of Atleta)()
Atleti.Add(New Atleta())
Public ReadOnly non ha molto senso...
Per inserire i valori delle textbox è sufficiente che le passi al costruttore quando istanizi un nuovo atleta (New Atleta(textbox1.text,textbox2.text ecc..... ))
aaa