hassan4640
Sapiens Sapiens
1 min. di lettura
Vota 2 / 5

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 cin>>codice_fiscale[j];
codice_fiscale[j]=toupper(codice_fiscale[j]);
}
for(j=1;j if(codice_fiscale[j]>='A' && codice_fiscale[j] else if(codice_fiscale[j]>='0' && codice_fiscale[j] else cout }

for(j=1;j if(j%2!=0)
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;
}

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community