Salta ai contenuti. | Salta alla navigazione

Strumenti personali

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:

  1. 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.
  2. 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 stringa S .
  3. 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.
  4. la procedura o funzione di ricerca prende come parametri
    • l'array di strutture letto al punto 3
    • il nome di un mese
    (più, eventualmente, altri parametri) e fornisce alla procedura/funzione che l'ha invocata il codice del 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 codice NRE LDE 60 H 52
  • mentre LU SHENZANG 6 Maggio 90 MASCHIO avrà come codice LUX SHN 90 E 6

Si consegnino i file:

  • un file COGNOME.c (dove COGNOME va sostituito col cognome dello studente) che contiene il main e le funzioni usate solo nell'esercizio base
  • un file facoltativo.c che contiene il main 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 e funzioni.c . L'eseguibile che viene creato dovrà risolvere l'esercizio 1.
  • nell'altro, inserirà i file facoltativo.c e funzioni.c . L'eseguibile che viene creato dovrà risolvere l'esercizio 2.