Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // questa funzione, dati i parametri di input
- // nome, cognome, datanascita,sesso,comune di nascita
- // dovrà calcolare il codice fiscale
- function calcolacodicefiscale(
- nome, cognome,datanascita,sesso,comune
- ) {
- // qui verrà restituito il codice fiscale
- // per consentirne l'utilizzo da parte del client
- /*
- Ci servono:
- - 3 lettere per il cognome
- - 3 lettere per il nome
- - l'anno di nascita (numero)
- - il mese della data di nascita (lettera)
- - il giorno della data di nascita (numero)
- - il codice del comune di nascita
- - il carattere di controllo
- */
- var risultato = ""; // creiamo una variabile per la produzione del risultato
- // il nostro risultato sarà una stringa nella quale verranno
- // concatenate le diverse elaborazioni
- // risultato = "" -> inizializza il risultato come stringa vuota
- // l'operatore "+" aggiunge al risultato il valore restituito dalle
- // funzioni che andiamo ad invocare
- risultato = risultato + gestisci_cognome(cognome);
- risultato = risultato + gestisci_nome(nome);
- risultato = risultato + gestisci_data();
- risultato += gestisci_comune(); // operatore di concatenazione +=
- risultato = risultato + calcola_codice();
- // alla fine devo restituire il risultato:
- return risultato;
- }
- /*
- Gestione del cognome
- 1. Sono necessari come detto prima 3 caratteri per rappresentare il cognome,
- e sono la prima la seconda e la terza consonante del cognome.
- 2. E' possibile che le consonanti siano meno di tre, in questo caso
- è possibile aggiungere le vocali nell'ordine in cui compaiono nel cognome.
- 3. Per cognomi più corti di 3 caratteri, è possibile sostituire il
- carattere mancante con la lettera X.
- Chiaramente se ci sono cognomi con più parti,
- è necessario rimuovere gli spazi e considerare tutto come un cognome unico.
- */
- function gestisci_cognome(qualecognome) {
- // mettiamo in maiuscolo il cognome
- var c = qualecognome.toUpperCase(); // in "c" sarà il cognome con cui lavorare
- // ci servono le consonanti del cognome
- // ovviamente non esiste un metodo di nessuna libreria che
- // ci dia le consonanti di una stringa, quindi dobbiamo provvedere
- // autonomamente!!!
- /* 1. */
- var consonanti = ottieni_consonanti(c);
- /* 2. dobbiamo controllare la lunghezza delle consonanti */
- if (consonanti.length < 3) // se la stringa delle consonanti è lunga meno di 3 caratteri
- {
- // devo prendere le vocali
- var vocali = ottieni_vocali(c); // stesso ragionamento fatto per il recupero delle consonanti
- consonanti = consonanti + vocali;
- // 3.
- if (consonanti.length < 3) // se ancora non abbiamo 3 caratteri
- consonanti = consonanti + "X"; // aggiungiamo una X
- }
- // è possibile che sommando consonanti e vocali abbiamo ottenuto una
- // stringa più lunga di 3 caratteri, quindi andiamo a controllare
- // .substr() recupera una sottostringa
- if (consonanti.length > 3) consonanti = consonanti.substr(0, 3);
- // alla fine restituiamo il valore calcolato
- return consonanti;
- }
- // questa funzione prenderà in input un testo e restituirà le consonanti
- // contenute nel testo
- function ottieni_consonanti(testo) {
- var risultato = ""; // qui accoderò tutte le consonanti
- // dobbiamo controllare tutti i caratteri UNO AD UNO contenuti nel testo
- for(var indice=0; indice < testo.length; ++indice) // "indice" sulla stringa
- {
- // DEVO prendere il carattere nella posizione "indice"
- var carattere = testo.substr(indice, 1);
- //var carattere = testo.charAt(indice);
- //var carattere = testo[indice];
- // se si tratta di un carattere alfabetico
- if (carattere >= "A" && carattere <= "Z") {
- // dobbiamo vedere se è una consonante
- // in realtà ci conviene controllare che NON (!)
- // sia una vocale
- if (!(carattere == 'E' || carattere == 'I' ||
- carattere == 'O' || carattere == 'U' || carattere == 'A'))
- // if (carattere != 'E' && carattere != 'I' &&
- // carattere != 'O' && carattere != 'U' && carattere != 'A')
- {
- // se è una consonante lo dobbiamo conservare
- risultato = risultato + carattere;
- }
- }
- }
- // alla fine dobbiamo restituire tutte le consonanti conservate
- return risultato;
- }
- function ottieni_vocali(testo) {
- var risultato = ""; // qui accoderò tutte le consonanti
- // dobbiamo controllare tutti i caratteri UNO AD UNO contenuti nel testo
- for(var indice=0; indice < testo.length; ++indice) // "indice" sulla stringa
- {
- // DEVO prendere il carattere nella posizione "indice"
- var carattere = testo.substr(indice, 1);
- // se si tratta di un carattere alfabetico
- if (carattere >= "A" && carattere <= "Z") {
- // dobbiamo vedere se è una vocale
- if (carattere == 'E' || carattere == 'I' ||
- carattere == 'O' || carattere == 'U' || carattere == 'A')
- {
- // se è una consonante lo dobbiamo conservare
- risultato = risultato + carattere;
- }
- }
- }
- // alla fine dobbiamo restituire tutte le consonanti conservate
- return risultato;
- }
- /*
- Per il nome il discorso è analogo con la particolarità che se il nome
- è composto da (*) 4 o più consonanti vengono prese nell'ordine la prima,
- la terza e la quarta.
- Anche qui potremmo trovarci nella situazione di un numero
- di consonanti minore di 3 e allo stesso modo si aggiungo le vocali.
- Ripetiamo anche qui che se il nome è più corto di 3 lettere
- è possibile sostituire i caratteri mancanti con delle X.
- Se il nome fosse composto da più nomi, bisogna considerarlo tutto assieme.
- */
- function gestisci_nome(qualenome) {
- // mettiamo in maiuscolo il nome
- var c = qualenome.toUpperCase(); // in "c" sarà il cognome con cui lavorare
- // ci servono le consonanti del cognome
- // fortunatamente prima avevamo scritto il metodo per la gestione cognome
- /* 1. */
- var consonanti = ottieni_consonanti(c);
- // (*) se ci sono più di 4 consonanti devo scartare la seconda
- if (consonanti.length > 3) {
- // prima consonante + terza e quarta
- // | |
- // V V
- consonanti = consonanti.substr(0, 1) + consonanti.substr(2,2);
- }
- /* 2. dobbiamo controllare la lunghezza delle consonanti */
- if (consonanti.length < 3) // se la stringa delle consonanti è lunga meno di 3 caratteri
- {
- // devo prendere le vocali
- var vocali = ottieni_vocali(c); // stesso ragionamento fatto per il recupero delle consonanti
- consonanti = consonanti + vocali;
- // 3.
- if (consonanti.length < 3) // se ancora non abbiamo 3 caratteri
- consonanti = consonanti + "X"; // aggiungiamo una X
- }
- // è possibile che sommando consonanti e vocali abbiamo ottenuto una
- // stringa più lunga di 3 caratteri, quindi andiamo a controllare
- // .substr() recupera una sottostringa
- if (consonanti.length > 3) consonanti = consonanti.substr(0, 3);
- // alla fine restituiamo il valore calcolato
- return consonanti;
- }
- function gestisci_data() { return "00X00"; }
- function gestisci_comune() { return "X000"; }
- function calcola_codice() { return "X"; }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement