Concetti Chiave
- Il programma C++ calcola il carattere di controllo di un codice fiscale utilizzando specifiche tabelle di valori per caratteri pari e dispari.
- Il codice legge in input una stringa di 16 caratteri, convertendoli in maiuscolo per un'elaborazione uniforme.
- Sommando i valori associati a ciascun carattere in base alla loro posizione pari o dispari, si determina un valore di controllo.
- Il carattere di controllo è validato confrontandolo con un vettore di controllo basato sull'indice calcolato dalla somma.
- Se il carattere calcolato corrisponde a quello fornito, il codice fiscale è considerato valido; altrimenti, non lo è.
C++ - Carattere di controllo codice fiscale
#include
#include
#include
#define DIM 17
#define c_lung 36
using namespace std;
int main()
{
int j,somma=0,num,valori_pari[]={0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
char codice_fiscale[DIM];//valori_dispari[c_lung];
bool controllo[DIM]={0,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1};
int valori_dispari[c_lung] = {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 };
char vett_controllo[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','W','X','Y','Z'};
int ris;
cout
for(j=1;j
codice_fiscale[j]=toupper(codice_fiscale[j]);
}
for(j=1;j
for(j=1;j
if(codice_fiscale[j]>='0' && codice_fiscale[j]
num=codice_fiscale[j]-48;
somma+=valori_dispari[num];
}
else if(codice_fiscale[j]>='A' && codice_fiscale[j]
num=(codice_fiscale[j]-65)+10;
somma+=valori_dispari[num];
}
if(j%2==0)
if(codice_fiscale[j]>='0' && codice_fiscale[j]
//num=codice_fiscale[j]-48;
//somma+=valori_pari[num];
//opzione 2
somma+=(int)codice_fiscale[j]-'0';
}
else if(codice_fiscale[j]>='A' && codice_fiscale[j]
//num=(codice_fiscale[j]-65)+10;
//somma+=valori_pari[num];
//opzione 2
somma+=codice_fiscale[j]-'A';
}
}
//Controllo della validità dell'ultimo carattere
ris=(somma%26);
if(vett_controllo[ris]==codice_fiscale[16]) {
cout
}else{
cout
}
return 0;
}