|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2017
Messaggi: 32
|
[C++] Aiuto con un programma per il calcolo del codice fiscale?
Buonasera a tutti..
La prof. ci ha chiesto di creare un programma che calcoli il codice fiscale, sono riuscito a fare tutto, tranne calcolare l'ultimo carattere, che viene calcolato in base a tutti gli altri. Su questa pagina di wikipedia ( https://it.wikipedia.org/wiki/Codice...codice_fiscale) potrete vedere nel dettaglio come viene calcolato, e nell'allegato c'è il codice incriminato, la funzione è cinCalc Non è che potreste dirmi dove sbaglio? PS scusate se non commento.. ![]()
__________________
Mobo: Asus H110M-K - CPU: Intel Core i5-6500 3,2GHz - RAM: Corsair 2x4Gb DDR4 2133MHz - SSD: Samsung 850 EVO 250Gb - HDD: Western Digital 1Tb - GPU: Nvidia GeForce GT730 2Gb GDDR5 (coming soon best) - PSU: Corsair VS650 650W - SO: Microsoft Windows 10 Pro
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Aug 2017
Messaggi: 469
|
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Per quanto ne so il codice fiscale si ottiene prendendo le prime 3 consonanti del cognome + la prima, terza e quarta consonante del nome (ovviamente se presenti, altrimenti si rimpiazzano con le vocali).
Non mi sembra che questo sia stato fatto, il tuo codice prende solo le prime 3 consonanti di nome e cognome. Sbaglio? Un'altra cosa: il tuo codice funziona solo se i dati di ingresso sono MAIUSCOLI. A questo punto, ti conviene convertire subito l'input in maiuscolo prima di proseguire, cosi' eviti degli errori. Riguardo il codice per il calcolo del controllo: Codice:
char cinCalc(string cod){ string disp="", par=""; bool parBool = false, dispBool = false; int PAR = 0, DISP = 0; int lettParInt[36] = {0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; int lettDispInt[36] = {1,0,5,7,9,13,15,17,19,21,1,0,5,7,9,13,15,17,19,21,2,4,18,20,11,3,6,8,12,14,16,10,22,25,24,23}; // Sottovento - questa parte deve solo creare due stringhe: la prima // contenente le lettere in posizione pari, la seconda con le lettere in // posizione dispari. // E' un lavoro che puo' essere fatto in altro modo, decisamente piu' // semplice!! for (int i=0;i<15;i++) { if ((i+1)%2==0) { if (!parBool) { par = cod[i]; parBool = !parBool; } else { par += cod[i]; } PAR++; } else { if (!dispBool) { disp = cod[i]; dispBool = !dispBool; } else { disp += cod[i]; } DISP++; } } int x = 0; for (int i=0;i<PAR;i++) { x += search(lettParInt, par[i]); } for (int i=0;i<DISP;i++) { x += search(lettDispInt, par[i]); } return x%26+65; } ![]() @Mursey: un aiuto verrà sempre dato a Hogwarts… a chi se lo merita
__________________
In God we trust; all others bring data Ultima modifica di sottovento : 08-01-2018 alle 14:50. |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Jan 2017
Messaggi: 32
|
Grazie a tutti!
Mi scuso se non ho più risposto, ma è riniziata la scuola e ho preso 2 alla verifica di matematica il primo giorno.. Comunque ho risolto con l'aiuto di un mio amico a scuola Il programma l'avevo scritto in qualche ora perchè pensavo si dovesse consegnare lunedì ed ero cosciente fosse pieno di errori relativi alle regole di generazione, ma ciò che importa alla prof penso sia più la capacità di fare qualcosa che funzioni, quindi mi sono soffermato su ciò che proprio non andava ![]() Grazie lo stesso a tutti!!
__________________
Mobo: Asus H110M-K - CPU: Intel Core i5-6500 3,2GHz - RAM: Corsair 2x4Gb DDR4 2133MHz - SSD: Samsung 850 EVO 250Gb - HDD: Western Digital 1Tb - GPU: Nvidia GeForce GT730 2Gb GDDR5 (coming soon best) - PSU: Corsair VS650 650W - SO: Microsoft Windows 10 Pro
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Aug 2017
Messaggi: 469
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:29.