Torna al Thread
Public Class Form1
'Come chiave è la fascia della sanzione - <key,value> -> <int , Sanzione>
Private DizzionarioFascia As New Dictionary(Of Integer, Sanzione)()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Ho tre fasce di sanzioni:
'1) fascia comprende numeri da 211 a 2108.00 con rate autorizzate massimo a 12
'2) fascia comprende numeri da 2108.01 a 5270.00 con rate autorizzate massimo a 24
'3 ) fascia comprende numeri da 5270.01 a 99999.99 con rate autorizzate massimo a 60
DizzionarioFascia.Add(1, New Sanzione(211.0F, 2108.0F, 12))
DizzionarioFascia.Add(2, New Sanzione(2108.01F, 5270.0F, 24))
DizzionarioFascia.Add(3, New Sanzione(5270.01F, 99999.99F, 60))
Console.WriteLine(recuperaRataFascia(211.0F))
End Sub
Private Function recuperaRataFascia(importoSanzione As Single) As Integer
For i As Integer = 1 To 3
If (importoSanzione >= DizzionarioFascia(i).getMinimaSansione()) AndAlso (importoSanzione <= DizzionarioFascia(i).getMassimaSansione()) Then
Console.WriteLine("Fascia di appartenenda = " & i)
Console.WriteLine("Minima Fascia = " & DizzionarioFascia(i).getMinimaSansione())
Console.WriteLine("Massima Fascia = " & DizzionarioFascia(i).getMassimaSansione())
Dim valoreDivisione As Integer = 105
Dim calcoloRata As Single = (importoSanzione / CSng(valoreDivisione))
'Arrotonda in difetto
Dim totaleRata As Decimal = Math.Floor(CDec(calcoloRata))
Console.WriteLine("Totale Rata Calcolata = " & totaleRata)
If totaleRata < DizzionarioFascia(i).getMassimeRate() Then
Return CInt(Math.Truncate(totaleRata))
Else
Return DizzionarioFascia(i).getMassimeRate()
End If
Else
Console.WriteLine("Fascia non presente")
End If
Next
'Non ci sono rate
Return -1
End Function
End Class