Programma C++ che calcola l'esattezza codice fiscale

/*Questo programma controlla l'esattezza del codice fiscale inserito, senza tenere conto delle omocodie*/
#include <iostream>
#include <cstdlib>
#include <cstdio>

#define DIM 17
#define c_lung 36

using namespace std;

int main()
{
int i,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<<"Inserisci il tuo codice fiscale: "<<endl;

for(i=1;i<DIM;i++) {
cin>>codice_fiscale;
codice_fiscale=toupper(codice_fiscale);
}
for(i=1;i<DIM;i++){
if(codice_fiscale>='A' && codice_fiscale<='Z' && controllo==1);
else if(codice_fiscale>='0' && codice_fiscale<='9' && controllo==0);
else cout<<"Il codice fiscale inserito non e' valido alla posizione: "<<i<<endl;
}

for(i=1;i<DIM-1;i++){
if(i%2!=0)
if(codice_fiscale>='0' && codice_fiscale<='9'){
num=codice_fiscale-48;
somma+=valori_dispari[num];
}
else if(codice_fiscale>='A' && codice_fiscale<='Z'){
num=(codice_fiscale-65)+10;
somma+=valori_dispari[num];
}
if(i%2==0)
if(codice_fiscale>='0' && codice_fiscale<='9'){
//num=codice_fiscale-48;
//somma+=valori_pari[num];
//opzione 2
somma+=(int)codice_fiscale-'0';
}
else if(codice_fiscale>='A' && codice_fiscale<='Z'){
//num=(codice_fiscale-65)+10;
//somma+=valori_pari[num];
//opzione 2

somma+=codice_fiscale-'A';
}
}
//Controllo della validità dell'ultimo carattere
ris=(somma%26);
if(vett_controllo[ris]==codice_fiscale[16]) cout<<"Il codice fiscale e' giusto"<<endl;
cout<<somma;
cin.get();
return 0;
}

Hai bisogno di aiuto in Informatica?
Trova il tuo insegnante su Skuola.net | Ripetizioni
Registrati via email