20 dicembre 2012 - AM
Fondamenti di Informatica modulo A - Compito B
Prof. Marco Gavanelli
20 dicembre 2012
Esercizio (punti 16)
Un file binario parole.bin contiene un insieme di parole (al massimo 100). Ogni parola contiene
- un stringa contenente al massimo 100 caratteri, compreso il terminatore
- un intero, che rappresenta la lunghezza della parola.
Si desidera avere un programma che controlla quali di queste parole sono palindrome. Una parola è palindroma se la si può leggere sia da sinistra verso destra, sia da destra verso sinistra. Ad esempio, la parola radar è palindroma.
Si scriva un programma C che visualizza quali parole sono palindrome, usando il seguente algoritmo:
- nel
main
, si invochi una procedura o funzione di lettura (punto 2), una di elaborazione (punto 3) e una di stampa (punto 5). - La procedura o funzione di lettura deve leggere il file parole.bin e portarne il contenuto in un opportuno array di strutture, da fornire al
main
. - La procedura o funzione di elaborazione prende come parametro l'array letto al punto 2 (più eventualmente altri parametri) e fornisce al
main
un array di parole palindrome. Per verificare se una parola è palindroma, la funzione di elaborazione invoca una funzionepalindroma
(da implementare al punto 4) - Si scriva una funzione
palindroma
che prende come parametro una stringa (più, eventualmente, altri parametri) e fornisce come valore di ritorno- 1 se la stringa è palindroma
- 0 se la stringa non è palindroma
- Infine, si stampi l'array prodotto al punto 3 con una opportuna procedura (o funzione).
Facoltativo (punti 4)
Si modifichi il programma in modo tale da considerare anche frasi palindrome e non solo parole. Il file binario frasi.bin contiene delle strutture organizzate come sopra (stringa di 100 caratteri più un intero), in cui però la stringa può contenere simboli di punteggiatura. Per verificare se la stringa è palindroma, non vanno considerati i simboli di punteggiatura.
Ad esempio, la frase
ERO LI` A SOPPORTARE ACETO NELL'ENOTECA: ERA TROPPO, SAI LORE'
va considerata palindroma.
I possibili simboli di punteggiatura sono riportati in un file punteggiatura.bin , che contiene una stringa (con al massimo 100 caratteri incluso il terminatore) che contiene tutti i simboli di punteggiatura ordinati in ordine di codice ASCII. La stringa va portata in memoria centrale all'inizio del programma. Per verificare se un carattere appartiene a tale stringa, lo studente utilizzi l'algoritmo più efficiente che conosce.
Si consegnino i file:
- un file
main.c
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 facoltativo - un file
funzioni.c
che contiene le funzioni comuni
più tutti i file header ritenuti necessari.