JavascriptProva

domenica 22 dicembre 2013

Codice per la ridistribuzione di turni in base a una preferenza

Codice per la ridistribuzione di turni in base a una preferenza da 0 a 100.
Class persona
    Implements IComparable
    Public nome As String
    Public preferenza As Integer
    Public turni As Integer

    Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo
        Dim altro As persona = DirectCast(obj, persona)
        Return Me.preferenza.CompareTo(altro.preferenza)
    End Function
End Class
Public Class Form1
    Dim WithEvents miaGriglia As Griglia(Of jLabel)
    Dim risultato As Double
    Dim indice As Integer
    Dim mario As New persona
    Dim giuseppe As New persona
    Dim luigi As New persona
    Dim numTurni As Integer = 100
    Dim totale As Integer
    Dim attribuiti As Integer = 0
    Dim matrice As ArrayList
    Dim resto As Integer
    Dim aggiunta As Integer
    Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
        mario.nome = "Mario"
        giuseppe.nome = "Giuseppe"
        luigi.nome = "Luigi"
        mario.preferenza = 50
        giuseppe.preferenza = 50
        luigi.preferenza = 50

        matrice = New ArrayList
        matrice.Add(mario)
        matrice.Add(giuseppe)
        matrice.Add(luigi)

        'conto il totale delle preferenze
        matrice.Sort()
        calcolo()
       
        
    End Sub
    Sub calcolo()

        If indice = matrice.Count Then Return
        For n = indice To matrice.Count - 1
            totale += matrice(n).preferenza
        Next

        'attribuisco i turni


        For n = indice To matrice.Count - 1
            aggiunta = Math.Floor(numTurni / totale * matrice(n).preferenza)
            matrice(n).turni += aggiunta
            attribuiti += aggiunta
        Next



        For n = 0 To matrice.Count - 1
            Debug.Print(matrice(n).nome & " " & matrice(n).preferenza & " " & matrice(n).turni)
        Next
        resto = numTurni - attribuiti
        Debug.Print("resto " & resto)
        totale = 0
        attribuiti = 0
        numTurni = resto
        Debug.Print("-----")
        indice += 1
        calcolo()

    End Sub
End Class

Nessun commento:

Posta un commento