Ad un certo punto ho smesso di commentarlo ma comunque sono delle switch per i giorni i mesi e il carattere di controllo che è l'ultimo...comunque eccolo
int main(int argc, char *argv[])
{
int c,n,i,p,k,j,nc;
char cognome[max],nome[max],provincia[max],codice[max];
char sesso;
printf(" ------ CODICE FISCALE ------\n");
printf("scrivere tutto in minuscolo\n\n\n");
do{ //COGNOME
printf("Cognome: ");
for(i=0; ((cognome[i]=getchar())!='\n') && i<max;i++);
cognome[i]='\0';
c=i;
}while(i<1);
do{ //NOME
printf("Nome: ");
for(i=0; ((nome[i]=getchar())!='\n') && i<max;i++);
nome[i]='\0';
n=i;
}while(i<1);
//FICHI FICHI
printf("Sesso(m/f): ");
scanf("%c",&sesso);
//DATA DI NASCITA
int gg,mm,aa;
printf("Data di nascita(gg/mm/aaaa): ");
scanf("%d/%d/%d",&gg,&mm,&aa);
//3 CONSONANTI COGNOME DENTRO CODICE
i=0;
for(k=0;k<3;k++){
for(;i<c;i++)
if(!(cognome[i]=='a' || cognome[i]=='e' || cognome[i]=='i' || cognome[i]=='o' || cognome[i]=='u')){
codice[k]=cognome[i];
break;
}
i++;
}
//CONTO LE CONSONANTI DENTRO AL NOME
for(i=0;i<n;i++){
if(nome[i]!='a'||nome[i]!='e'||nome [i]!='i'||nome[i]!='o'||nome[i]!='u')
nc++;
}
//3 CONSONANTI NOME DENTRO CODICE
if(nc==3){
i=0;
for(k=3;k<6;k++){
for(;i<c;i++)
if(!(nome[i]=='a' || nome[i]=='e' || nome[i]=='i' || nome[i]=='o' || nome[i]=='u')){
codice[k]=nome[i];
break;
}
i++;
}
}
if(nc>3){
int contatore=0;
i=0;
for(k=3;k<6;k++){
for(;i<n;i++)
if(!(nome[i]=='a' || nome[i]=='e' || nome[i]=='i' || nome[i]=='o' || nome[i]=='u')){
contatore++;
if(contatore!=2){
codice[k]=nome[i];
break;
}
}
i++;
}
}
//PER LA POSIZIONE 6 E 7 SI AVRA'
k=6;
switch(aa){
case 0:codice[k]='0'; codice[k+1]='0'; break;
case 1:codice[k]='0'; codice[k+1]='1'; break;
case 2:codice[k]='0'; codice[k+1]='2'; break;
case 3:codice[k]='0'; codice[k+1]='3'; break;
case 4:codice[k]='0'; codice[k+1]='4'; break;
case 5:codice[k]='0'; codice[k+1]='5'; break;
case 6:codice[k]='0'; codice[k+1]='6'; break;
case 7:codice[k]='0'; codice[k+1]='7'; break;
case 8:codice[k]='0'; codice[k+1]='8'; break;
case 9:codice[k]='0'; codice[k+1]='9'; break;
case 10:codice[k]='1'; codice[k+1]='0'; break;
case 11:codice[k]='1'; codice[k+1]='1'; break;
case 12:codice[k]='1'; codice[k+1]='2'; break;
case 13:codice[k]='1'; codice[k+1]='3'; break;
case 14:codice[k]='1'; codice[k+1]='4'; break;
case 15:codice[k]='1'; codice[k+1]='5'; break;
case 16:codice[k]='1'; codice[k+1]='6'; break;
case 17:codice[k]='1'; codice[k+1]='7'; break;
case 18:codice[k]='1'; codice[k+1]='8'; break;
case 19:codice[k]='1'; codice[k+1]='9'; break;
case 20:codice[k]='2'; codice[k+1]='0'; break;
case 21:codice[k]='2'; codice[k+1]='1'; break;
case 22:codice[k]='2'; codice[k+1]='2'; break;
case 23:codice[k]='2'; codice[k+1]='3'; break;
case 24:codice[k]='2'; codice[k+1]='4'; break;
case 25:codice[k]='2'; codice[k+1]='5'; break;
case 26:codice[k]='2'; codice[k+1]='6'; break;
case 27:codice[k]='2'; codice[k+1]='7'; break;
case 28:codice[k]='2'; codice[k+1]='8'; break;
case 29:codice[k]='2'; codice[k+1]='9'; break;
case 30:codice[k]='3'; codice[k+1]='0'; break;
case 31:codice[k]='3'; codice[k+1]='1'; break;
case 32:codice[k]='3'; codice[k+1]='2'; break;
case 33:codice[k]='3'; codice[k+1]='3'; break;
case 34:codice[k]='3'; codice[k+1]='4'; break;
case 35:codice[k]='3'; codice[k+1]='5'; break;
case 36:codice[k]='3'; codice[k+1]='6'; break;
case 37:codice[k]='3'; codice[k+1]='7'; break;
case 38:codice[k]='3'; codice[k+1]='8'; break;
case 39:codice[k]='3'; codice[k+1]='9'; break;
case 40:codice[k]='4'; codice[k+1]='0'; break;
case 41:codice[k]='4'; codice[k+1]='1'; break;
case 42:codice[k]='4'; codice[k+1]='2'; break;
case 43:codice[k]='4'; codice[k+1]='3'; break;
case 44:codice[k]='4'; codice[k+1]='4'; break;
case 45:codice[k]='4'; codice[k+1]='5'; break;
case 46:codice[k]='4'; codice[k+1]='6'; break;
case 47:codice[k]='4'; codice[k+1]='7'; break;
case 48:codice[k]='4'; codice[k+1]='8'; break;
case 49:codice[k]='4'; codice[k+1]='9'; break;
case 50:codice[k]='5'; codice[k+1]='0'; break;
case 51:codice[k]='5'; codice[k+1]='1'; break;
case 52:codice[k]='5'; codice[k+1]='2'; break;
case 53:codice[k]='5'; codice[k+1]='3'; break;
case 54:codice[k]='5'; codice[k+1]='4'; break;
case 55:codice[k]='5'; codice[k+1]='5'; break;
case 56:codice[k]='5'; codice[k+1]='6'; break;
case 57:codice[k]='5'; codice[k+1]='7'; break;
case 58:codice[k]='5'; codice[k+1]='8'; break;
case 59:codice[k]='5'; codice[k+1]='9'; break;
case 60:codice[k]='6'; codice[k+1]='0'; break;
case 61:codice[k]='6'; codice[k+1]='1'; break;
case 62:codice[k]='6'; codice[k+1]='2'; break;
case 63:codice[k]='6'; codice[k+1]='3'; break;
case 64:codice[k]='6'; codice[k+1]='4'; break;
case 65:codice[k]='6'; codice[k+1]='5'; break;
case 66:codice[k]='6'; codice[k+1]='6'; break;
case 67:codice[k]='6'; codice[k+1]='7'; break;
case 68:codice[k]='6'; codice[k+1]='8'; break;
case 69:codice[k]='6'; codice[k+1]='9'; break;
case 70:codice[k]='7'; codice[k+1]='0'; break;
case 71:codice[k]='7'; codice[k+1]='1'; break;
case 72:codice[k]='7'; codice[k+1]='2'; break;
case 73:codice[k]='7'; codice[k+1]='3'; break;
case 74:codice[k]='7'; codice[k+1]='4'; break;
case 75:codice[k]='7'; codice[k+1]='5'; break;
case 76:codice[k]='7'; codice[k+1]='6'; break;
case 77:codice[k]='7'; codice[k+1]='7'; break;
case 78:codice[k]='7'; codice[k+1]='8'; break;
case 79:codice[k]='7'; codice[k+1]='9'; break;
case 80:codice[k]='8'; codice[k+1]='0'; break;
case 81:codice[k]='8'; codice[k+1]='1'; break;
case 82:codice[k]='8'; codice[k+1]='2'; break;
case 83:codice[k]='8'; codice[k+1]='3'; break;
case 84:codice[k]='8'; codice[k+1]='4'; break;
case 85:codice[k]='8'; codice[k+1]='5'; break;
case 86:codice[k]='8'; codice[k+1]='6'; break;
case 87:codice[k]='8'; codice[k+1]='7'; break;
case 88:codice[k]='8'; codice[k+1]='8'; break;
case 89:codice[k]='8'; codice[k+1]='9'; break;
case 90:codice[k]='9'; codice[k+1]='0'; break;
case 91:codice[k]='9'; codice[k+1]='1'; break;
case 92:codice[k]='9'; codice[k+1]='2'; break;
case 93:codice[k]='9'; codice[k+1]='3'; break;
case 94:codice[k]='9'; codice[k+1]='4'; break;
case 95:codice[k]='9'; codice[k+1]='5'; break;
case 96:codice[k]='9'; codice[k+1]='6'; break;
case 97:codice[k]='9'; codice[k+1]='7'; break;
case 98:codice[k]='9'; codice[k+1]='8'; break;
case 99:codice[k]='9'; codice[k+1]='9'; break;
}
k=8;
switch(mm){
case 1: codice[k]='a'; break;
case 2: codice[k]='b'; break;
case 3: codice[k]='c'; break;
case 4: codice[k]='d'; break;
case 5: codice[k]='e'; break;
case 6: codice[k]='h'; break;
case 7: codice[k]='l'; break;
case 8: codice[k]='m'; break;
case 9: codice[k]='p'; break;
case 10: codice[k]='r'; break;
case 11: codice[k]='s'; break;
case 12: codice[k]='t'; break;
}
k=9;
if(sesso=='f')
gg=gg+40;
switch(gg){
case 1:codice[k]='0'; codice[k+1]='1'; break;
case 2:codice[k]='0'; codice[k+1]='2'; break;
case 3:codice[k]='0'; codice[k+1]='3'; break;
case 4:codice[k]='0'; codice[k+1]='4'; break;
case 5:codice[k]='0'; codice[k+1]='5'; break;
case 6:codice[k]='0'; codice[k+1]='6'; break;
case 7:codice[k]='0'; codice[k+1]='7'; break;
case 8:codice[k]='0'; codice[k+1]='8'; break;
case 9:codice[k]='0'; codice[k+1]='9'; break;
case 10:codice[k]='1'; codice[k+1]='0'; break;
case 11:codice[k]='1'; codice[k+1]='1'; break;
case 12:codice[k]='1'; codice[k+1]='2'; break;
case 13:codice[k]='1'; codice[k+1]='3'; break;
case 14:codice[k]='1'; codice[k+1]='4'; break;
case 15:codice[k]='1'; codice[k+1]='5'; break;
case 16:codice[k]='1'; codice[k+1]='6'; break;
case 17:codice[k]='1'; codice[k+1]='7'; break;
case 18:codice[k]='1'; codice[k+1]='8'; break;
case 19:codice[k]='1'; codice[k+1]='9'; break;
case 20:codice[k]='2'; codice[k+1]='0'; break;
case 21:codice[k]='2'; codice[k+1]='1'; break;
case 22:codice[k]='2'; codice[k+1]='2'; break;
case 23:codice[k]='2'; codice[k+1]='3'; break;
case 24:codice[k]='2'; codice[k+1]='4'; break;
case 25:codice[k]='2'; codice[k+1]='5'; break;
case 26:codice[k]='2'; codice[k+1]='6'; break;
case 27:codice[k]='2'; codice[k+1]='7'; break;
case 28:codice[k]='2'; codice[k+1]='8'; break;
case 29:codice[k]='2'; codice[k+1]='9'; break;
case 30:codice[k]='3'; codice[k+1]='0'; break;
case 31:codice[k]='3'; codice[k+1]='1'; break;
case 32:codice[k]='3'; codice[k+1]='2'; break;
case 33:codice[k]='3'; codice[k+1]='3'; break;
case 34:codice[k]='3'; codice[k+1]='4'; break;
case 35:codice[k]='3'; codice[k+1]='5'; break;
case 36:codice[k]='3'; codice[k+1]='6'; break;
case 37:codice[k]='3'; codice[k+1]='7'; break;
case 38:codice[k]='3'; codice[k+1]='8'; break;
case 39:codice[k]='3'; codice[k+1]='9'; break;
case 40:codice[k]='4'; codice[k+1]='0'; break;
case 41:codice[k]='4'; codice[k+1]='1'; break;
case 42:codice[k]='4'; codice[k+1]='2'; break;
case 43:codice[k]='4'; codice[k+1]='3'; break;
case 44:codice[k]='4'; codice[k+1]='4'; break;
case 45:codice[k]='4'; codice[k+1]='5'; break;
case 46:codice[k]='4'; codice[k+1]='6'; break;
case 47:codice[k]='4'; codice[k+1]='7'; break;
case 48:codice[k]='4'; codice[k+1]='8'; break;
case 49:codice[k]='4'; codice[k+1]='9'; break;
case 50:codice[k]='5'; codice[k+1]='0'; break;
case 51:codice[k]='5'; codice[k+1]='1'; break;
case 52:codice[k]='5'; codice[k+1]='2'; break;
case 53:codice[k]='5'; codice[k+1]='3'; break;
case 54:codice[k]='5'; codice[k+1]='4'; break;
case 55:codice[k]='5'; codice[k+1]='5'; break;
case 56:codice[k]='5'; codice[k+1]='6'; break;
case 57:codice[k]='5'; codice[k+1]='7'; break;
case 58:codice[k]='5'; codice[k+1]='8'; break;
case 59:codice[k]='5'; codice[k+1]='9'; break;
case 60:codice[k]='6'; codice[k+1]='0'; break;
case 61:codice[k]='6'; codice[k+1]='1'; break;
case 62:codice[k]='6'; codice[k+1]='2'; break;
case 63:codice[k]='6'; codice[k+1]='3'; break;
case 64:codice[k]='6'; codice[k+1]='4'; break;
case 65:codice[k]='6'; codice[k+1]='5'; break;
case 66:codice[k]='6'; codice[k+1]='6'; break;
case 67:codice[k]='6'; codice[k+1]='7'; break;
case 68:codice[k]='6'; codice[k+1]='8'; break;
case 69:codice[k]='6'; codice[k+1]='9'; break;
case 70:codice[k]='7'; codice[k+1]='0'; break;
case 71:codice[k]='7'; codice[k+1]='1'; break;
}
codice[11]='h';
codice[12]='5';
codice[13]='0';
codice[14]='1';
k=16;
int r[15];
for(i=1;i<k;i++){
if(i%2==0){
switch(codice[i-1]){
case '0':r[i-1]=0; break;
case '1':r[i-1]=1; break;
case '2':r[i-1]=2; break;
case '3':r[i-1]=3; break;
case '4':r[i-1]=4; break;
case '5':r[i-1]=5; break;
case '6':r[i-1]=6; break;
case '7':r[i-1]=7; break;
case '8':r[i-1]=8; break;
case '9':r[i-1]=9; break;
case 'a':r[i-1]=0; break;
case 'b':r[i-1]=1; break;
case 'c':r[i-1]=2; break;
case 'd':r[i-1]=3; break;
case 'e':r[i-1]=4; break;
case 'f':r[i-1]=5; break;
case 'g':r[i-1]=6; break;
case 'h':r[i-1]=7; break;
case 'i':r[i-1]=8; break;
case 'j':r[i-1]=9; break;
case 'k':r[i-1]=10; break;
case 'l':r[i-1]=11; break;
case 'm':r[i-1]=12; break;
case 'n':r[i-1]=13; break;
case 'o':r[i-1]=14; break;
case 'p':r[i-1]=15; break;
case 'q':r[i-1]=16; break;
case 'r':r[i-1]=17; break;
case 's':r[i-1]=18; break;
case 't':r[i-1]=19; break;
case 'u':r[i-1]=20; break;
case 'v':r[i-1]=21; break;
case 'w':r[i-1]=22; break;
case 'x':r[i-1]=23; break;
case 'y':r[i-1]=24; break;
case 'Z':r[i-1]=25; break;
}
}else{
switch(codice[i-1]){
case '0':r[i-1]=1; break;
case '1':r[i-1]=0; break;
case '2':r[i-1]=5; break;
case '3':r[i-1]=7; break;
case '4':r[i-1]=9; break;
case '5':r[i-1]=13; break;
case '6':r[i-1]=15; break;
case '7':r[i-1]=17; break;
case '8':r[i-1]=19; break;
case '9':r[i-1]=21; break;
case 'a':r[i-1]=1; break;
case 'b':r[i-1]=0; break;
case 'c':r[i-1]=5; break;
case 'd':r[i-1]=7; break;
case 'e':r[i-1]=9; break;
case 'f':r[i-1]=13; break;
case 'g':r[i-1]=15; break;
case 'h':r[i-1]=17; break;
case 'i':r[i-1]=19; break;
case 'j':r[i-1]=21; break;
case 'k':r[i-1]=2; break;
case 'l':r[i-1]=4; break;
case 'm':r[i-1]=18; break;
case 'n':r[i-1]=20; break;
case 'o':r[i-1]=11; break;
case 'p':r[i-1]=3; break;
case 'q':r[i-1]=6; break;
case 'r':r[i-1]=8; break;
case 's':r[i-1]=12; break;
case 't':r[i-1]=14; break;
case 'u':r[i-1]=16; break;
case 'v':r[i-1]=10; break;
case 'w':r[i-1]=22; break;
case 'x':r[i-1]=25; break;
case 'y':r[i-1]=24; break;
case 'z':r[i-1]=23; break;
}
}
}
int MAX=0;
for(i=0;i<15;i++){
MAX=MAX+r[i];
MAX=MAX%26;
}
switch (MAX){
case 0: MAX='A' ; break;
case 1: MAX='B' ; break;
case 2: MAX='C' ; break;
case 3: MAX='D'; break;
case 4: MAX='E' ; break;
case 5: MAX='F'; break;
case 6: MAX='G' ; break;
case 7: MAX='H' ; break;
case 8: MAX='I' ; break;
case 9: MAX='J' ; break;
case 10: MAX='K' ; break;
case 11: MAX='L' ; break;
case 12: MAX='M' ; break;
case 13: MAX='N' ; break;
case 14: MAX='O' ; break;
case 15: MAX='P' ; break;
case 16: MAX='Q' ; break;
case 17: MAX='R' ; break;
case 18: MAX='S' ; break;
case 19: MAX='T' ; break;
case 20: MAX='U' ; break;
case 21: MAX='V' ; break;
case 22: MAX='X' ; break;
case 23: MAX='Y' ; break;
case 24: MAX='W' ; break;
case 25: MAX='Z' ; break;
}
codice[15]=MAX;
printf("\n");
printf(" CODICE FISCALE : ");
for(i=0;i<16;i++)
printf( "%c",codice[i]);
printf("\n");
system("PAUSE");
return 0;
}