21 dicembre 2015 PM - compito B
Fondamenti di Informatica modulo A - Compito B
Prof. Marco Gavanelli
21 dicembre 2015
Esercizio (punti 16)
Si vuole scrivere un programma che calcola il codice fiscale (semplificato) di una persona.
Il programma deve prendere in ingresso da tastiera i seguenti dati di una persona:
- Cognome, nome: stringhe contenenti al massimo 20 caratteri, incluso il terminatore.
- giorno di nascita: intero
- mese di nascita: stringa
- (ultime due cifre dell') anno di nascita: intero
- sesso: stringa che può essere "MASCHIO" o "FEMMINA"
L'utente deve inserire tutti i dati con soli caratteri MAIUSCOLI (il programma non deve fare alcun controllo in proposito, si dà per scontato che l'utente li inserirà maiuscoli), a parte il mese che deve essere inserito con l'iniziale maiuscola e gli altri caratteri minuscoli.
Il codice fiscale semplificato è rappresentato dalla seguente struttura:
- una stringa di esattamente 3 caratteri (più il terminatore), che contiene le prime 3 consonanti del cognome. Si supponga che ci siano sempre almeno 3 consonanti nel cognome (non è necessario inserire controlli nel programma).
- Una stringa di esattamente 3 caratteri (più il terminatore), che contiene le prime 3 consonanti del nome. Si supponga che ci siano sempre almeno 3 consonanti nel nome.
- Un intero, che rappresenta le ultime due cifre dell'anno di nascita
- Una lettera
M
, che rappresenta il mese di nascita, calcolata come spiegato in seguito. - Un intero
X
, che si calcola come spiegato in seguito.
Il file binario mesi.bin contiene la codifica dei mesi. Per ogni mese, contiene
- nome del mese: stringa contenente al massimo 10 caratteri, incluso il terminatore
- M: lettera corrispondente, da inserire nel codice fiscale
L'intero X
è:
- uguale al giorno di nascita per i maschi
- uguale al giorno di nascita + 40 per le femmine
Ad esempio, se il file mesi.bin contiene:
Gennaio | A |
Febbraio | B |
Marzo | C |
Aprile | D |
Maggio | E |
Giugno | H |
... |
e viene inserito da tastiera:
ROSSI FRANCESCO 15 Gennaio 83 MASCHIO
il programma dovrà visualizzare
RSS FRN 83 A 15
Si organizzi il programma come segue:
- nel
main
,- si invochi una procedura o funzione di lettura del file mesi.bin (da sviluppare nel punto 3);
- si leggano i dati della persona da tastiera con una procedura o funzione che fornisce una struttura;
- si invochi due volte una procedura o funzione che estrae le prime tre consonanti di una stringa (da sviluppare al punto 2): una volta viene invocata per il cognome ed una per il nome;
- si invochi una funzione che ricerca il codice del mese (da sviluppare al punto 4);
- infine si stampi il codice fiscale semplificato.
- Si scriva una procedura o funzione che prende come parametro una stringa
S
(più, eventualmente, altri parametri) e fornisce alla procedura/funzione che l'ha invocata una stringa che contiene le prime 3 consonanti della stringaS
. - Si scriva la procedura o funzione di lettura; essa legge il file mesi.bin , ne porta il contenuto in un opportuno array di strutture e visualizza tale array.
- la procedura o funzione di ricerca prende come parametri
- l'array di strutture letto al punto 3
- il nome di un mese
Esercizio 2 (punti 4)
Può capitare che il nome o il cognome di una persona non contenga tre consonanti. In tal caso, nel codice fiscale vengono riportate tutte le consonanti, seguite dalle prime vocali (per arrivare a 3 lettere), nello stesso ordine in cui compaiono nel nome (o nel cognome). Qualora anche il numero di vocali non sia sufficiente, vengono inserite delle 'X'
.
Ad esempio,
- la persona
NERI ELDA 12 Giugno 60 FEMMINA
avrà come codiceNRE LDE 60 H 52
- mentre
LU SHENZANG 6 Maggio 90 MASCHIO
avrà come codiceLUX SHN 90 E 6
Si consegnino i file:
- un file
COGNOME.c
(dove COGNOME va sostituito col cognome dello studente) che contiene ilmain
e le funzioni usate solo nell'esercizio base - un file
facoltativo.c
che contiene ilmain
e le funzioni usate solo nell'esercizio 2 - un file
funzioni.c
che contiene le funzioni comuni
più tutti i file header ritenuti necessari.
Nella correzione, il docente creerà due progetti:
- in uno, inserirà i file
COGNOME.c
efunzioni.c
. L'eseguibile che viene creato dovrà risolvere l'esercizio 1. - nell'altro, inserirà i file
facoltativo.c
efunzioni.c
. L'eseguibile che viene creato dovrà risolvere l'esercizio 2.