Oppure

Loading
23/10/10 14:03
salve a tutti mi e venuta l' idea di creare uno scrpit in grado di calcolare il codice fiscale. l' algoritmo per calcolare il codice fiscale it.wikipedia.org/wiki/… dice di prendere le prime tre consonanti (e fin qui tutto bene) ma il problema e che non so come scriverle! ecco il codice che legge le consonanti:

// creo l' array delle consonanti e delle vocali
$consonanti = array('b','c','d','f','g','h','l','m','n','o','p','q','r','s','t','v','z');
$vocali = array('a','e','i','o','u');

// leggo le consonanti
foreach($consonanti as $consonante) {
$consonanti_cognome = strpos($cognome, $consonante);
}
Ultima modifica effettuata da 23/10/10 14:05
23/10/10 14:24
a_butta
1) La questione è abbastanza più complessa di come la presenti: non basta solo prendere le prime tre consonanti. Infatti prova a creare il codice fiscale di DARIO FOE... Già il tuo metodo non funziona.

2) Completamente inutile l'array delle consonanti.

Io ho realizzato già una classe che dà l'output del codice fiscale, e per generare le consonanti del cognome ho usato questa procedura:

1) Attraverso una Function dal cognome in input ricavo due variabili string: VOCALI e CONSONANTI. Ovviamente basta fare una cosa di questo genere: Per ogni lettera del cognome, se appartiene all'array delle vocali (array('a','e','i','o','u')) la aggiungi alla variabile VOCALI, altrimenti alla variabile CONSONANTI.

2) Una volta avuta la stringa CONSONANTI, ho preso la sottostringa formata dai primi tre caratteri:
$output = substr($CONSONANTI,0,2)

Se strlen(output) è 3, hai risolto, altrimenti aggiungi anche le vocali e prend le prime tre lettere:
$output = substr($output.$VOCALI,0,2)

Se adesso sono tre le lettere OK, altrimenti fintantochè la lunghezza di output non sia 3 aggiungi una "X"
Ultima modifica effettuata da a_butta 23/10/10 14:26
aaa
23/10/10 14:27
paoloricciuti
Postato originariamente da bartn8:

salve a tutti mi e venuta l' idea di creare uno scrpit in grado di calcolare il codice fiscale. l' algoritmo per calcolare il codice fiscale it.wikipedia.org/wiki/… dice di prendere le prime tre consonanti (e fin qui tutto bene) ma il problema e che non so come scriverle! ecco il codice che legge le consonanti:

// creo l' array delle consonanti e delle vocali
$consonanti = array('b','c','d','f','g','h','l','m','n','o','p','q','r','s','t','v','z');
$vocali = array('a','e','i','o','u');

// leggo le consonanti
foreach($consonanti as $consonante) {
$consonanti_cognome = strpos($cognome, $consonante);
}

Beh così alla fine del foreach ti ritroverai con la posizione dell'ultima consonante del cognome. Inoltre c'è un algoritmo migliore secondo me:
<?
function isConsonant($lettera){
if($lettera!='a' || $lettera!='e' || $lettera!='i' || $lettera!='o' || $lettera!='u'){
return 1;
}
return 0;
}
$leng=strlen($cognome);
$i=0;
$cont=0;
$codicefiscale="";
while($i<$leng && $cont<3){
if(isConsonant($cognome[$i])==1){
$codicefiscale=$codicefiscale.$cognome[$i];
$cont++;
}
$i++;
}
?>


Come vedi in questo codice c'è una funzione che ci dice se una lettera è o meno una consonante poi ci basta scorrere il cognome lettera per lettera e fino alle prime 3 consonanti.
aaa
23/10/10 22:57
gigisoft
Salve,
in realta' l'algoritmo e' un pochino piu' complesso; inoltre bisogna fare attenzione agli spazi ( se uno ha piu' nomi, o un cognome di piu' parole, gli spazi potrebbero essere scambiati per consonanti )
comunque mi interessai tempo fa dell'argomento, c'e' un programma tra i miei che ho messo su PieroTofy che calcola il codice fiscale, guardalo, anche se e' in Delphi non dovrebbe essere troppo complicato capire come funziona l'algoritmo.

Ciao :k:

Luigi.
aaa
24/10/10 11:31
ho risolto il problema, quando lo manderò per l' ammissione ai membri e riceverò risposta scriverò qui il codice sorgente.