Durante lo scorso anno scolastico abbiamo potuto provare l'algoritmo di calcolo del codice fiscale.
ALGORITMO
1. Le prime sei lettere del codice fiscale sono composte dalle prime tre consonanti di nome e cognome. Se non sono presenti allora si dovranno prendere n consonanti a disposizione più anche le prime vocali a disposizione. Nel caso in cui il cognome o il nome avesse meno di tre lettere si aggiungeranno n x tante quante per raggiungere le 3 lettere.
2.La settima cifra identifica il mese di nascita seguendo una tabella:
A | Gennaio |
B | Febbraio |
C | Marzo |
D | Aprile |
E | Maggio |
H | Giugno |
L | Luglio |
M | Agosto |
P | Settembre |
R | Ottobre |
S | Novembre |
T | Dicembre |
3. L'ottava cifra riguarda invece il giorno di nascita. Ecco qui si ha una distinzione in base al sesso, in quando al giorno della donna andrà sommato 40.
4. Le quattro cifre successive riguardano il comune di nascita e si chiama "Codice Nazionale" o "Codice Belfiore" e identifica in maniera univoca ogni comune italiano e stato estero. É formato da una lettera e da tre cifre. Erroneamente si pensa essere il codice catastale, in realtà differisce sia per il formato (il codice catastale è costituito da una lettera, una cifra e due lettere) sia per il fatto che il codice catastale non permette di andare a rappresentare gli stati esteri.
5. L'ultima cifra del codice fiscale è una cifra di controllo atta a verificare se il codice fiscale sia corretto o meno. Si calcola mettendo da una parte i caratteri del codice fiscale che si trovano in posizione dispari e da una parte quelli che si trovano in posizione pari in quanto i valori matematici associati variano a seconda della loro posizione. Dopo di che, i valori sommati vanno divisi per 26, il numero delle lettere nel nostro alfabeto esteso, e il resto di quella divisione viene convertito in una lettera come nella tabella qui sotto.
Resto | Lettera | Resto | Lettera | Resto | Lettera | Resto | Lettera |
0 | A | 7 | H | 14 | O | 21 | V |
1 | B | 8 | I | 15 | P | 22 | W |
2 | C | 9 | J | 16 | Q | 23 | X |
3 | D | 10 | K | 17 | R | 24 | Y |
4 | E | 11 | L | 18 | S | 25 | Z |
5 | F | 12 | M | 19 | T | ||
6 | G | 13 | N | 20 | U |
CODICE
1. setstr(string, int): in questa funzione viene passato il nome o il cognome(string) e un intero (posizione) che è la posizione nel codice fiscale in cui devono essere inserite le prime tre consonanti del nome e cognome. Se il nome o cognome è uguale a 3 copia direttamente le 3 cifre, se non ci sono abbastanza lettere viene messa una X per completare. Se invece è più lunga di 3 vengono estrapolate le prime tre consonanti e copiate nel codice fiscale.
2. setdata(string stringa, char* sesso, int posizione): In questa funzione viene passato il giorno mese e anno, il sesso e la posizione in cui copiare i dati. Viene fatto un parsing per ottenere il giorno, mese e anno dalla stringa. Per il mese viene associato una lettera per ogni mese tramite uno switch, per il giorno viene fatto un controllo sui giorni del mese e se è maschio vengono copiate le due cifre del giorno, se è femmina verrà aggiunto 40 a quel numero.
3. setcomune(string stringa, int posizione): in questa funzione viene aperto il file dei codici catastali dei comuni e fatto un controllo città per città per trovare quella giusta, una volta trovata viene inserito il codice catastale che si trova una riga sotto il nome nel file.
4. check(): qui viene calcolato il codice di controllo. in un vettore vengono messe le lettere del alfabeto. Successivamente vengono sommati i valori pari e dispari, tramite uno switch. che prende ogni caso nella tabella. dopo la somma dei numeri pari e quelli dispari vengono divisi per 26 e salvo il codice di controllo nel codice fiscale.
Marco Fallara