Prova scritta del 24 gennaio 2019 di Fondamenti di Programmazione / Fondamenti di Informatica I Per studenti di Ing. Elettronica e Ing. Gestionale immatricolati negli anni accademici 2016-17 e precedenti DURATA DELLA PROVA: 2 ore
A pena di annullamento immediato della prova:
1) Non è possibile consultare libri o appunti (in qualunque forma) né utilizzare calcolatrici, telefoni cellulari, ecc.
2) Non è consentito comunicare (con qualunque mezzo) 3) Non è consentito uscire dall’aula
Lo studente è tenuto a scrivere, correggere, compilare ed eseguire su computer (a casa o in laboratorio) gli esercizi di
programmazione prima della prova orale. Alla prova orale lo studente deve portare una memory pen USB contenente i sorgenti dei programmi corretti e le stampe dei relativi file.
Esercizio 1 (15 punti)
Un file di testo contiene un piccolo dizionario dei sinonimi. Ogni riga riporta un elenco di sinonimi (una sola parola ciascuno), separati da virgole. L’elenco è terminato da un punto.
Per esempio:
casa, abitazione, alloggio, dimora.
lavoro, impegno, occupazione.
percorso, cammino, tragitto, viaggio, strada, itinerario.
Ovviamente, ogni riga contiene sempre almeno due termini. Ogni gruppo di sinonimi contiene al massimo 10 parole. Il file contiene al massimo 300 righe.
Si vuole sviluppare uno strumento per aiutare l’autore di un testo a scegliere tra i sinonimi dei termini da lui/lei utilizzati.
Per fare questo, si vuole aggiungere al testo originale l’elenco dei sinonimi di ogni parola presente nel dizionario dei sinonimi sopra descritto, accodandoli alla parola stessa e separandoli dal carattere '/'. Nota importante: la parola stessa non va ripetuta.
Quindi, se il testo originale è
Ho trovato alloggio in una cittadina lungo il tragitto verso il posto di lavoro
Il testo risultante dovrà essere
Ho trovato alloggio/casa/abitazione/dimora in una cittadina lungo il tragitto/percorso/cammino/viaggio/strada/itinerario verso il posto di lavoro/impegno/occupazione
NOTE:
- si assuma che il testo originale non contenga simboli di interpunzione.
- gli “a capo” non sono significativi
- si assuma che il dizionario dei sinonimi contenga declinate esplicitamente tutte le forme verbali, singolari e plurali, maschili e femminili. Quindi è sufficiente controllare la corrispondenza esatta di ciascun termine del testo con i termini nel dizionario.
Si scriva un programma in linguaggio C che riceva sulla linea di comando il nome del file contenente il dizionario dei sinonimi, il nome del file contenente il testo originale e il nome del file di uscita. Il programma deve scrivere nel file di uscita il testo originale modificato come sopra descritto.
Esercizio 1 (15 punti)
La conversione di un numero intero nella sua forma in lettere, nella lingua italiana, diventa via via più regolare passando dalla prima ventina al primo centinaio e oltre.
In particolare:
- fino al numero 19 è conveniente utilizzare una tabella (vettore di stringhe contenente i numeri in lettere)
- dal numero 20 al numero 99 è conveniente usare una tabella (idem) con i soli nomi delle decine, in quanto la costruzione è regolare, ad eccezione del primo valore di ogni decina, che elide l’ultima lettera prima delle unità (trentuno, trentatré) e dell’elisione dell’ultima lettera se l’unità inizia con una vocale (“ventuno”, “trentotto”, ecc.)
Si scriva una funzione in linguaggio C che riceva come argomenti un numero intero, compreso tra 0 e 99, e una stringa. La funzione deve scrivere nella stringa la rappresentazione testuale del numero facendo uso delle tabelle sopra descritte (non sono ammessi algoritmi che non prevedano tali tabelle).