Numeri romani
Inviato: 18 set 2007, 18:04
Salve, popolo! Ad una settimana di rientro dalle vacanze la prof di Informatica ha deciso di farci una bella verifica di programmazione, in cui c'era un esercizio in cui bisognava convertire un numero da 1 a 9 nella scrittura romana. Avendo io finito con largo anticipo lei mi assegnò di riprogettare il codice in modo da convertire in scrittura romana un numero da 1 a 999. Io ho buttato giù un codice ma la prof ha detto che secondo lei se ne poteva creare uno più bello. Il meglio che sono riuscito a fare è postato in bianco qui sotto. Aspetto idee per altre soluzioni al problema.
Si tratta di codice di Visual Basic, ma dovrebbe essere abbastanza comprensibile a chiunque.
Si tratta di codice di Visual Basic, ma dovrebbe essere abbastanza comprensibile a chiunque.
Note:
Lo slash così \ è la divisione intera (in alcuni linguaggi è diverso).
Public Function Componi_Romano(Ordine As Integer, Valore As Integer) As String
Dim i As Integer
Dim Simbolo(6) As String
Simbolo(0) = "I"
Simbolo(1) = "V"
Simbolo(2) = "X"
Simbolo(3) = "L"
Simbolo(4) = "C"
Simbolo(5) = "D"
Simbolo(6) = "M"
If (Valore Mod 5) = 4 Then
Componi_Romano = Simbolo(Ordine * 2) & Simbolo(Ordine * 2 + (Valore \ 5) + 1)
Else
If Valore > 4 Then Componi_Romano = Simbolo(Ordine * 2 + 1)
For i = 1 To (Valore Mod 5)
Componi_Romano = Componi_Romano & Simbolo(2 * Ordine)
Next i
End If
End Function
Nota: qui si suppone che Numero sia compreso tra 1 e 999
Public Function Trasforma_Romano(Numero As Integer) As String
Dim Cen As Integer
Dim Dec As Integer
Dim Uni As Integer
Cen = Numero \ 100
Dec = (Numero Mod 100) \ 10
Uni = Numero Mod 10
Trasforma_Romano = Componi_Romano(2, Cen) & Componi_Romano(1, Dec) & Componi_Romano(0, Uni)
End Function