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
Miei appunti liberi, senza pretesa di dire necessariamente sempre cose giuste o sensate, durante l'apprendimento e la pratica della programmazione
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.
Iscriviti a:
Commenti sul post (Atom)
Nessun commento:
Posta un commento