Salta ai contenuti. | Salta alla navigazione

Strumenti personali

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:

  1. nel main, si invochi una procedura o funzione di lettura (punto 2), una di elaborazione (punto 3) e una di stampa (punto 5).
  2. 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.
  3. 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 funzione palindroma (da implementare al punto 4)
  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
  5. 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 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 facoltativo
  • un file funzioni.c che contiene le funzioni comuni

più tutti i file header ritenuti necessari.