Ciao ragazzi vi lascio qui sotto il mio lavoro per il calcolo sul codice fiscale che non riesco ad ultimare, qualcuno che mi aiuti?
P.S. Il nome e cognome in maiuscolo
#include<stdlib.h>
#include<stdio.h>
#include<conio2.h>
#include<conio.h>
#include<string.h>
#include <ctype.h>
int main()
{
int const dim=16,dim1=30;
char cf[dim],nome[dim1],cognome[dim1],luogo[dim1];
int data[dim],valdata,sesso,x;
char valmes;
int ncaratteri,ncaratteri1,ncaratteri2,ncaratteri3,g,m,a,ncn,ncc,errore,j,vnome[dim1],cnome[dim1];
int ccognome[dim1],vcognome[dim1],nvnome,ncnome;
char cognomecodice[dim],nomecodice[dim];
int i=0,nv,nc;
gotoxy(18,1);
printf("Programma per il calcolo di un codice fiscale");
do{
gotoxy(2,3);
printf("NOME: ");
gotoxy(8,3);
gets(nome);
ncn=strlen(nome);
for(i=0;i<ncn && errore==0;i++)
{
if(!(nome[i]>='A' && nome[i]<='Z'|| nome[i]==' '))
{
errore=1;
}
if(nome[i]==' ')
{
for(j=i;j<ncn;j++)
{
nome[j]=nome[j+1];
}
ncn--;
}
}
for(i=0,ncnome=0,nvnome=0;i<ncn;i++)
{
if(nome[i]=='A'|| nome[i]=='E'|| nome[i]=='I'|| nome[i]=='O'|| nome[i]=='U')
{
vnome[nvnome]=nome[i];
nvnome++;
}
else
{
cnome[ncnome]=nome[i];
ncnome++;
}
}
}while(errore==1);
do{
gotoxy(2,5);
printf("COGNOME: ");
gotoxy(11,5);
gets(cognome);
ncc=strlen(cognome);
errore=0;
for(i=0;i<ncc && errore==0;i++)
{
if(!(cognome[i]>='A' && cognome[i]<='Z' || cognome[i]==' '))
{
errore=1;
}
if(cognome[i]==' ')
{
for(j=i;j<ncc;j++)
{
cognome[j]=cognome[j+1];
}
ncc--;
}
}
for(i=0,nc=0,nv=0;i<ncc;i++)
{
if(cognome[i]=='A'|| cognome[i]=='E'|| cognome[i]=='I'|| cognome[i]=='O'|| cognome[i]=='U')
{
vcognome[nv]=cognome[i];
nv++;
}
else
{
ccognome[nc]=cognome[i];
nc++;
}
}
}while(errore==1);
do{
gotoxy(2,7);
printf("DATA: ");
gotoxy(8,7);
printf ("Giorno: ");
scanf ("%d",&g);
}while (g<1 || g>31);
do{
gotoxy(25,7);
printf ("Mese: ");
gotoxy(31,7);
scanf ("%d", &m);
switch(m)
{
case 1:
{ valmes='A';
break;}
case 2:
{ valmes='B';
break;}
case 3:
{ valmes='C';
break;}
case 4:
{ valmes='D';
break;}
case 5:
{ valmes='E';
break;}
case 6:
{ valmes='H';
break;}
case 7:
{ valmes='L';
break;}
case 8:
{ valmes='M';
break;}
case 9:
{ valmes='P';
break;}
case 10:
{ valmes='R';
break;}
case 11:
{ valmes='S';
break;}
case 12:
{ valmes='T';
break;}
}
int data[4];
}while (m<1 || m>12);
int const dimensione=4;
int anno[dimensione];
printf("inserisci la tuo anno di nascita (4 cifre);a ognicifra premi invio\n");
for(i=0;i<4;i++){scanf("%d",&a);}
if (g==29 && m==2 && a%4==0)
{
gotoxy(55,7);
printf ("La data è corretta \n\n");
}
else
{
if (g<29 && m==2)
{
gotoxy(55,7);
printf ("La data e' corretta \n\n");
}
else
{
if (g<31 && m==4 || m==6 || m==9 || m==11)
{
gotoxy(55,7);
printf ("La data e' corretta \n\n");
}
else
{
if (m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)
{
gotoxy(55,7);
printf ("La data e' corretta \n\n");
}
else
{
gotoxy(55,7);
printf ("La data non e' corretta! ");
}
}
}
}
gotoxy(2,15);
printf("SESSO (Maschio premi 1) (Femmina premi 2) : ");
gotoxy(51,15);
scanf("%d",&sesso);
switch(sesso)
{
case 1:
{
valdata=g;
}break;
case 2:
{
valdata=g+40;
}break;
}
int valdata1,valdata2;
valdata1=valdata/10;
valdata2=valdata-(valdata1*10);
int const dimm=16;
char codicefiscale[dimm];
if(nc>=3)
{
codicefiscale[0]=ccognome[0];
codicefiscale[1]=ccognome[1];
codicefiscale[2]=ccognome[2];
}
else
{
if(nc==2)
{
codicefiscale[0]=ccognome[0];
codicefiscale[1]=ccognome[1];
codicefiscale[2]=vcognome[0];
}
else
{
if(nc==1)
{
codicefiscale[0]=ccognome[0];
codicefiscale[1]=vcognome[0];
codicefiscale[2]=vcognome[1];
}
else
{
if(ncc<3 && nc==1 && nv==1);
{
codicefiscale[0]=ccognome[0];
codicefiscale[1]=vcognome[0];
codicefiscale[2]=88;
}
}
}
}
if(ncnome>=4)
{
codicefiscale[3]=cnome[0];
codicefiscale[4]=cnome[2];
codicefiscale[5]=cnome[3];
}
else
{
if(ncnome==3)
{
codicefiscale[3]=cnome[0];
codicefiscale[4]=cnome[1];
codicefiscale[5]=cnome[2];
}
else
{
if(ncnome==2)
{
codicefiscale[3]=cnome[0];
codicefiscale[4]=cnome[1];
codicefiscale[5]=vnome[0];
}
else
{
if(nc==1)
{
codicefiscale[3]=cnome[0];
codicefiscale[4]=vnome[0];
codicefiscale[5]=vnome[1];
}
else
{
if(ncn<3 && ncnome==1 && nvnome==1)
{
codicefiscale[3]=cnome[0];
codicefiscale[4]=vnome[0];
codicefiscale[5]='\X0';
}
}
}
}
}
int a1,a2,a3,a4;
char valmese;
a1 = a/1000;
a2 = (a/100)-(a1*10);
a3 = (a/10)-(a1*100+a2*10);
a4 = a-(a1*1000+a2*100+a3*10);
codicefiscale[6]=a3;
codicefiscale[7]=a4;
switch(m)
{
case 1:
{
valmese='A';
}break;
case 2:
{
valmese='B';
}break;
case 3:
{
valmese='C';
}break;
case 4:
{
valmese='D';
}break;
case 5:
{
valmese='E';
}break;
case 6:
{
valmese='H';
}break;
case 7:
{
valmese='L';
}break;
case 8:
{
valmese='M';
}break;
case 9:
{
valmese='P';
}break;
case 10:
{
valmese='R';
}break;
case 11:
{
valmese='S';
}break;
case 12:
{
valmese='T';
}break;
}
codicefiscale[8]=valmese;
codicefiscale[9]=valdata1;
codicefiscale[10]=valdata2;
codicefiscale[11]='L';
codicefiscale[12]='2';
codicefiscale[13]='1';
codicefiscale[14]='9';
gotoxy(1,20);
puts(codicefiscale);
getch();
}