Sei sulla pagina 1di 2

02MNO ALGORITMI E PROGRAMMAZIONE

CORSO DI LAUREA IN INGEGNERIA INFORMATICA / CORSO DI LAUREA IN INGEGNERIA DELLE TELECOMUNICAZIONI A.A. 2013/14

Esercitazione di laboratorio n. 4
Esercizio n. 1: occorrenze di parole Si scriva un programma in grado di contare le occorrenze di ogni parola, appartenente a un insieme specificato, allinterno di un generico testo. Pi in dettaglio, lelenco delle parole da ricercare memorizzato in un file di testo, in ragione di una parola per riga del file. La lunghezza delle singole parole limitata a 20 caratteri, inoltre il numero totale di tali parole indicato sulla prima riga del file stesso. Le parole cos specificate devono essere ricercate in un testo memorizzato in un secondo file. Il numero di righe di questo file non noto a priori, ma si pu assumere che la lunghezza di ogni riga sia al pi pari a 100 caratteri. Come output, il programma deve riportare su video lelenco delle parole contenute nel primo file, ciascuna seguita dal numero di occorrenze con cui compare nel testo contenuto nel secondo file. Si noti che i due file devono essere letti una volta sola. Si trascurino i possibili problemi derivanti dalluso della punteggiatura (ovvero si considerino le stringhe parola, parola., parola!, etc., come diverse). POSSIBILE VARIANTE Si trattino le lettere maiuscole e quelle minuscole come equivalenti (ovvero, si considerino identiche le stringhe parola, PAROLA, ParolA, etc). Esempio (valido per la variante) Sia il file con lelenco delle parole da ricercare il seguente: 4 edison e genio citazione e il file con il testo il seguente: il genio non e altro che una grande attitudine alla pazienza, Buffon il Genio e la punta estrema della saggezza, Cocteau il GENIO e 10% ispirazione e 90% sudore, Edison Io un genio? Non diciamo sciocchezze..., Anonimo NON occorre essere un GeNiO per risolvere questo esercizio, Anonimo Il programma deve dunque visualizzare il messaggio: edison 1 occorrenza/e e 3 occorrenza/e genio 4 occorrenza/e citazione 0 occorrenza/e NB: si noti che la stringa genio? viene considerata diversa dalla stringa genio in tutte le sue varianti con maiuscole e minuscole. Esercizio n. 2: indice analitico Si completi il codice ottenuto dallesercizio precedente in maniera tale che, oltre al numero di occorrenze, il programma visualizzi anche le posizioni (intese come numero dordine allinterno delle stringhe contenute nel testo, numerate progressivamente a partire da 1) in cui le parole specificate dal primo file sono state rintracciate nel secondo file.

02MNO ALGORITMI E PROGRAMMAZIONE


CORSO DI LAUREA IN INGEGNERIA INFORMATICA / CORSO DI LAUREA IN INGEGNERIA DELLE TELECOMUNICAZIONI A.A. 2013/14

Si considerino due casi: 1. il programma limiti la visualizzazione di tali posizioni alle prime 10 occorrenze di ciascuna parola (qualora una stringa venisse rintracciata pi di 10 volte, il programma fornisca il conteggio esatto delle occorrenze, ma riporti solo le prime 10 posizioni) 2. il programma visualizzi correttamente tutte le posizioni in cui ogni parola del primo file appare nel secondo. Si noti che nel primo caso sufficiente utilizzare, per ciascuna parola da rintracciare, un vettore statico, il cui contenuto pu essere generato durante la stessa fase di conteggio delle occorrenze. Nel secondo caso, invece, a meno di ricorrere a qualche altra struttura dati, si deve utilizzare un vettore dinamico, allocato e riempito solo dopo aver trovato il numero di occorrenze di ciascuna parola. Esempio Con riferimento allesempio precedente, il programma deve generare a video le informazioni: edison 1 occorrenza/e parola/e: 30 e 3 occorrenza/e parola/e: 4 15 24 genio 4 occorrenza/e parola/e: 2 14 23 42 citazione 0 occorrenza/e Esercizio n. 3: prodotto di matrici Due matrici di interi (m1 e m2) sono memorizzate in due file con formato identico: la prima riga del file contiene le dimensioni (numero di righe r e di colonne c) della matrice le r righe successive contengono i c valori che appartengono alla riga corrente della matrice Si scriva un programma che: acquisisca dinamicamente le due matrici, verificando che le loro dimensioni permettano di eseguire il prodotto m1 m2 calcoli la matrice prodotto (allocando dinamicamente anchessa) memorizzi tale matrice in un terzo file, con formato simile a quello di ingresso. I nomi dei tre file siano passati al programma sulla riga di comando. Esempio Siano i due file di ingresso di contenuto seguente: matrice 1 matrice 2 2 3 3 4 -1 5 0 0 -3 -1 -1 4 0 2 1 1 0 2 -1 2 4 3 Allora il file di uscita dovr avere contenuto: 2 4 5 8 1 11 -2 -8 4 2