Purtroppo il mio codice si limita a convertire numeri compresi tra 0 e 3999, non per limitazioni tecniche ma perchè non sapevo come si rappresentassero i numeri più grandi…:-D
A grandi linee il codice svolge questo lavoro: preleva, tramite la funzione, l’intero e lo converte tramite str() in una stringa su cui poter lavorare e la inverte poichè era più facile lavorare su una stringa letta al contrario (ovvero dalla fine sino all’inizio).
Fatto ciò il programma confronta, in un ciclo, tutti i caratteri presenti nella parola con quelli presenti nel SELECT CASE e analizza l’indice del conteggio del ciclo in modo da sapere il peso che la cifra ricopre nel numero. Una volta che il programma interpreta di che tipo di cifra si tratta aggiunge alla stringa il relativo simbolo romano. Infine la funzione restituisce la stringa contente il numero come gli antichi lo avrebbero letto….
Come fare ad importare la classe nel proprio progetto?Prima di tutto scaricare il file in fondo al post, una volta terminato il download scompattiamo l’archivio zip e dalla cartella copiamo il file Math.class e incolliamolo nella cartella dove risiede il nostro progetto Gambas. Ora apriamo Gambas e come prima riga nel codice del form in cui utilizzeremo le funzioni della classe scriviamo quanto segue:
PRIVATE Math AS NEW Math
In questo modo possiamo accedere alla funzione con la sintassi:
Math.Dec2Rom()
Il prototipo della funzione è:Dec2Rom(decimal as integer) as string
Si nota come il programma accetta un numero decimale e restituisce una stringa.