sabato 13 giugno 2026

C# convertire un numero in formato numero romano

Nel caso che si ha la necessità di convertire un numero in formato romano nel linguaggio di programmazione C#,  tramite l'esempio qui di seguito illustra una tecnica di conversione.

In alto, sopra ad ogni dichiarazione, scriviamo due variabili di tipo array string, che possono essere utilizzati nella form (progetto Windows Forms) , in qualsiasi parte.


C#

private static readonly int[] valori =

     {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};

 private static readonly string[] simboli =

     {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};



Dopo aver creato i due campi, si crea una funzione, che verifica se il numero passato rispetta un certo range di valori, ed in caso positivo, converte il numero 

C#

public static string ConvertiInNumeriRomano(int numero)

 {

     if (numero < 1 || numero > 2100)

         throw new ArgumentOutOfRangeException(nameof(numero),

             "Il numero deve essere compreso tra 1 e 2100.");

 

     var risultato = string.Empty;

 

     for (int i = 0; i < valori.Length; i++)

     {

         while (numero >= valori[i])

         {

             numero -= valori[i];

             risultato += simboli[i];

         }

     }

 

     return risultato;

 }

 




Nell'evento click di un pulsante verifichiamo se abbiamo digitato in un controllo Textbox un valore numerico, ed in caso di esito positivo, lo passiamo alla funzione appena creata.

Di seguito il frammento di codie dell'evento click del pulsante.

C#

private void BtnConvertiNumeriRomani_Click(object sender, EventArgs e)

{

    try

    {

 

 

        if (!int.TryParse(TxtNumeri.Text, out int anno))

        {

            MessageBox.Show("Errore: inserire un numero intero valido.");

            return;

        }

        string numeroRomano = ConvertiInNumeriRomano(anno);

        MessageBox.Show($"Numero romano: {numeroRomano}");

 

 

    }

    catch (ArgumentOutOfRangeException ex)

    {

        MessageBox.Show("Errore:" + ex.Message);

    }

    catch (Exception ex)

    {

        MessageBox.Show("Errore:" + ex.Message);

    }

}

 






Nessun commento: