[C] Programma calcolo codice fiscale di Torino, non funziona

di il
15 risposte

[C] Programma calcolo codice fiscale di Torino, non funziona

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();
}
        

15 Risposte

Devi accedere o registrarti per scrivere nel forum
15 risposte