Carattere di Controllo nel Codice Fiscale in C#

Finalmente siamo arrivati a calcolare il carattere di controllo finale del codice fiscale utilizzando il linguaggio C#. Prima di mostrarvi il codice, devo fare una premessa: il risultato finale è dato dalla somma dei pesi dei caratteri pari e quelli dispari, quindi occorre calcolare il modulo di 26 del valore trovato e a questo risultato bisogna aggiungere 65 in modo da avere il numero del carattere ASCII corrispondente; a questo punto si trasforma il numero nel carattere equivalente ed il gioco è fatto. Per trasformare i caratteri nel relativo numero ASCII ho utilizzato Convert.ToInt32(), mentre per il compito inverso Convert.ToChar().

...
private char CodFiscControl(string strVal)
{
   int pesi = 0;
   int[] arrPesi = {1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 1,
         0, 5, 7, 9, 13, 15, 17, 19, 21, 2, 4, 18, 20, 11,
         3, 6, 8, 12, 14, 16, 10, 22, 25, 24, 23};
   strVal = strVal.ToUpper();
   for (int i = 0; i < strVal.Length; ++i)
   {
       if (((i + 1) % 2) == 0)
       {
            if (Convert.ToInt32(strVal[i]) >= 
                    Convert.ToInt32('0') &&
                    Convert.ToInt32(strVal[i]) <= 
                    Convert.ToInt32('9'))
               pesi += Convert.ToInt32(strVal[i]) -
                    Convert.ToInt32('0');
           else if (Convert.ToInt32(strVal[i]) >= 
                    Convert.ToInt32('A') &&
                    Convert.ToInt32(strVal[i]) <= 
                    Convert.ToInt32('Z'))
              pesi += Convert.ToInt32(strVal[i]) -
                    Convert.ToInt32('A');
        }
        else
        {
             if (Convert.ToInt32(strVal[i]) >= 
                    Convert.ToInt32('0') &&
                    Convert.ToInt32(strVal[i]) <= 
                    Convert.ToInt32('9'))
                pesi += arrPesi[Convert.ToInt32(strVal[i]) -
                    Convert.ToInt32('0')];
            else if (Convert.ToInt32(strVal[i]) >= 
                    Convert.ToInt32('A') &&
                    Convert.ToInt32(strVal[i]) <= 
                    Convert.ToInt32('Z'))
                pesi += arrPesi[Convert.ToInt32(strVal[i]) -
                    Convert.ToInt32('A') + 10];
        }
    }

    return Convert.ToChar(65 + (pesi % 26));
}
...

Se avete problemi e volete chiedermi qualcosa utilizzate il nostro forum al quale finora nessuno partecipa, forse perché snobbate il mio corso sul C# o siete timidi!

Vi rilascio il codice sorgente del codice fiscale in C#, ( il database dei comuni Italiani sapete dov’è ) utile anche per applicazioni gestionali reali. Spero comunque che studiate per capire come si calcola il codice fiscale, prelevare il lavoro già fatto è fin troppo semplice e non vi porterà mai ad essere dei programmatori.

<< Lezione Precedente – Inizio CorsoIndice LezioniArticolo Successivo >>

Di Giampaolo Rossi

Sviluppatore software da oltre 16 anni.