Numeri romani

Programmazione, algoritmica, teoria dell'informazione, ...
Rispondi
Il_Russo
Messaggi: 347
Iscritto il: 16 gen 2007, 16:04
Località: Pisa

Numeri romani

Messaggio da Il_Russo »

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.
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
Presidente della commissione EATO per le IGO
Rispondi