PDA

View Full Version : [C] - calcolo del codice fiscale


software-bloat
03-03-2009, 11:32
Ciao a tutti sono nuovo :D
sto provando a fare unprogramma in C,il calcolo del codice fiscale ma sto facendo un pò di confusione :stordita:

questo è quello che mi sta "uscendo":
http://pastebin.com/m13ca1997

ho fatto solo il cognome e la data,ma funziona solo la parte del cognome...:cry:
lo so sono un pò incapace U_U...

gugoXX
03-03-2009, 11:49
Che ricordi.
E' stata la prima routine commerciale che ho dovuto fare appena assunto.
In PL/SQL.

software-bloat
03-03-2009, 11:54
sapresti aiutarmi?:stordita:

gugoXX
03-03-2009, 11:56
sapresti aiutarmi?:stordita:

Ma e' un problema di C oppure di algoritmo?
In qualsiasi caso ti proporrei di creare una funzione (si possono fare anche in C), allla quale passeresti tutti i parametri necessari
Nome, Cognome, DataDiNascita, etc.
Poi dovrai porti il problema sul comune. Cosa pensi di fare?

software-bloat
03-03-2009, 11:58
l'algoritmo bene o male l'ho capito,ma trasformarlo in C non è semplicissimo...
ma devo farlo per forza

gugoXX
03-03-2009, 11:59
l'algoritmo bene o male l'ho capito,ma trasformarlo in C non è semplicissimo...
ma devo farlo per forza

Ecco. Allora prova a scrivere qui di seguito, in Italiano, la parte relativa al cognome.
Poi, separato, prova a descrivere cosa fa il tuo algoritmo.
Alla fine valutiamo dove e se ci sono errori.

software-bloat
03-03-2009, 12:07
il cognome sono riuscito a farlo,mi serverebbe una mano sul resto...
provo a spiegarti cos'ho capito del nome:

se le consonanti sono 4 o maggiori,prendo la prima,la terza e la quarta.
se sono minori di 4 prendo le prime tre.
se sono minori di tre aggiungo le vocali alla fine.
se il nome ha meno di tre lettere,si aggiunge una X fino ad arrivare a tre lettere.


io avevo pensato a una cosa del tipo

per ogni lettera del nome{
se (nome[i] != vocali){
ind[i]=nome[i];
count++;
}
se (count >= 4){
stampo ind[0];
stampo ind[2];
stampo ind[3];
}



poi il resto dovrebbe essere uguale al cognome

software-bloat
03-03-2009, 12:15
ti servirà anche la tabella dei codici associati ai comuni (mi sembra le penultime 4 cifre) + l'algo per il calcolo della cifra di controllo finale, mi sembra di ricordare che sia una cifra di controllo almeno...:D

si esatto ma quella parte me la fa un amico perchè io non sono in grado:fagiano:

gugoXX
03-03-2009, 13:00
il cognome sono riuscito a farlo,mi serverebbe una mano sul resto...
provo a spiegarti cos'ho capito del nome:

se le consonanti sono 4 o maggiori,prendo la prima,la terza e la quarta.
se sono minori di 4 prendo le prime tre.
se sono minori di tre aggiungo le vocali alla fine.
se il nome ha meno di tre lettere,si aggiunge una X fino ad arrivare a tre lettere.

L'algoritmo descritto cosi' non e' corretto. Una persona che si chiamasse
(cognome, nome) Chiang Oz, cosa dovrebbe venire fuori?
Come tratti il nome in questo caso?



io avevo pensato a una cosa del tipo

per ogni lettera del nome{
se (nome[i] != vocali){
ind[i]=nome[i];
count++;
}
se (count >= 4){
stampo ind[0];
stampo ind[2];
stampo ind[3];
}



poi il resto dovrebbe essere uguale al cognome

Il caso di prima viene soddisfatto?

software-bloat
03-03-2009, 13:04
L'algoritmo descritto cosi' non e' corretto. Una persona che si chiamasse
(cognome, nome) Chiang Oz, cosa dovrebbe venire fuori?
Come tratti il nome in questo caso?


be il nome avendo solo 2 lettere,si aggiunge una X alla fine,l'ho detto sopra no?

tomminno
03-03-2009, 13:30
l'algoritmo bene o male l'ho capito,ma trasformarlo in C non è semplicissimo...
ma devo farlo per forza

Beato te che l'hai capito, visto che il codice fiscale è calcolabile solo dall'agenzia delle entrate...
I casi di omocodia e gli stranieri non c'è modo di contemplarli.

tomminno
03-03-2009, 14:38
e perchè sarebbe calcolabile solo dall'agenzia delle entrate? il metodo di calcolo è noto...:mbe:

Ehm dove è specificato nell'algoritmo come stabilire il codice fiscale di una persona omocoda?
E soprattutto come fai a sapere se una persona è omocoda?
In caso di persone straniere come fai a comporre il codice fiscale?
Non parlo solo del codice nazione al posto del codice comune.

gugoXX
03-03-2009, 14:40
be il nome avendo solo 2 lettere,si aggiunge una X alla fine,l'ho detto sopra no?

E quindi la risposta e'?

Vincenzo1968
03-03-2009, 14:56
Ehm dove è specificato nell'algoritmo come stabilire il codice fiscale di una persona omocoda?
E soprattutto come fai a sapere se una persona è omocoda?
In caso di persone straniere come fai a comporre il codice fiscale?
Non parlo solo del codice nazione al posto del codice comune.

Attenzione. Nel caso di due persone nate alla stessa data, nello stesso luogo e con cognome e nome uguali o simili, potrebbe verificarsi il caso che i due codici fiscali siano uguali. In questo caso è l'agenzia delle entrate ad assegnare un codice fiscale diverso ad una delle due persone. Non c'è modo, dunque, con un programmino, di avere la certezza che il codice fiscale calcolato sia quello assegnato a quella persona dall'agenzia delle entrate.

È possibile calcolare il codice fiscale anche per una persona nata all'estero(ma valgono, anche qui, le considerazioni di cui sopra). Ad ogni paese estero, così come avviene per i comuni italiani, è assegnato un codice.

Per esempio:

Albania -> Z100
Andorra -> Z101
Austria -> Z102
...
Germania -> Z112
...
Giappone -> Z219

ndakota
03-03-2009, 17:14
sono l'amico di cui parlava software-bloat e vi posso dire che lo fa solo a scopo didattico, dunque tutte queste cose non sono importanti, non sarà il suo programmino ad assegnare il codice fiscale ai nuovi nati o agli stranieri :D

gugoXX
03-03-2009, 17:19
sono l'amico di cui parlava software-bloat e vi posso dire che lo fa solo a scopo didattico, dunque tutte queste cose non sono importanti, non sarà il suo programmino ad assegnare il codice fiscale ai nuovi nati o agli stranieri :D

Poi resta che commercialmente avrebbe comunque un senso.
Tipo compilare un form, nel quale c'e' anche il codice fiscale, e richiedere eventualmente di confermare e continuare nel caso il codice fiscale digitato non corrisponda a quello calcolato.
Oppure comunque tagliare nel caso non corrispondano i sottocampi comunque rispettati anche in caso di eguaglianze di codice fiscale (penso alla data di nascita).

tomminno
03-03-2009, 18:18
vabbè ma che c'entra, mica ha detto che deve fare un programma da rivendere all'agenzia delle entrate...:mbe: le obiezioni che fai tu riguardano gli impiegati dell'agenzia delle entrate, non l'algoritmo in sè...

Riguardano l'infattibilità pratica di un validatore di codice fiscale.
Perchè in caso di non validazione non sai se il codice è comunque effettivamente valido.

Vincenzo1968
03-03-2009, 18:54
Ho il database in formato Access 2000. Contiene i codici di tutti i comuni d'Italia e di tutti gli stati esteri. Se volete ve lo passo.
Dovrei avere da qualche parte anche il codice C che avevo sviluppato qualche tempo fa. Se lo trovo lo posto.

;)

ndakota
03-03-2009, 19:37
Ho il database in formato Access 2000. Contiene i codici di tutti i comuni d'Italia e di tutti gli stati esteri. Se volete ve lo passo.
Dovrei avere da qualche parte anche il codice C che avevo sviluppato qualche tempo fa. Se lo trovo lo posto.

;)

no non postarlo, deve farlo lui :D

Vincenzo1968
03-03-2009, 19:46
no non postarlo, deve farlo lui :D

Ok,

QUI (http://www.guidealgoritmi.it/public/comuni.zip) c'è il database.

;)

software-bloat
06-03-2009, 15:24
ho provato a farlo....ma da quando ho aggiunto la parte del codice di controllo non funziona :S
http://pastebin.com/m4b888ad8