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