Programmazione 1 (P-Z) a.a. 2007-08

Homework 3

Termine di consegna 26 novembre 2007, Ore 23:59

E' molto importante che prima di inviare le soluzioni leggiate le Indicazioni di consegna.

Esercizio 1

Scrivere un programma che prende in input un testo T e stampa le 10 parole piu' frequenti in ordine decrescente di frequenza. Affianco ad ogni parola si deve stampare anche la rispettiva frequenza nella frase. In caso di frequenze uguali si deve stampare prima la parola che e' apparsa per prima nel testo, leggendolo dall'inizio.

Esempio

Input:

C'era una volta un gatto e una volpe che camminavano per una strada 
di campagna. Il gatto aveva addosso un paio di stivali neri e un cappello 
da cowboy mentre la volpe una giacca marrone e un paio di sandali. I due 
canticchiavano mentre camminavano felici e contenti. Ad un certo punto 
videro aprirsi davanti alla loro strada una grande muraglia. Che ne pensi?
Chiese il gatto! Di cosa si tratta secondo te? Non lo so! 
Rispose la volpe. Magari e' la muraglia cinese? Chi lo sa?

Output:

un 5
una 5
di 4
e 3
gatto 3
volpe 3 
camminavano 2
il 2
la 2
muraglia 2

  • Attenzione: Il programma prende in input un testo, il che significa che il testo in questione puo' essere composto da piu' righe. Il vostro programma deve considerarlo "terminato" se nel leggerlo incontra il carattere '-' (meno).

Esercizio 2

Scrivere una funzione che prende in input una stringa T ed un puntatore ad un long, e restituisce un vettore di stringhe contenente le parole distinte in T. Invece np deve alla fine puntare al numero delle parole distinte. L'intestazione della funzione deve essere:
   char** Parole (const char T[], long* np)

Esempio

Input:

 
T = "Questa e' una stringa di cui ne dovete contare le parole distinte. 
Le parole sono considerate uguali anche nel caso in cui cominciano 
con maiuscolo oppure minuscolo"

Output: La funzione deve restituire un vettore che contiene le stringhe:

"Questa" "e'" "una" "stringa" "di" "cui" "ne" "dovete" "contare" "le" 
"parole" "distinte" "sono" "considerate" "uguali" "anche" "nel" "caso" 
"in" "cominciano" "con" "maiuscolo" "oppure" "minuscolo"
Mentre
 
np[0] = 24

  • Attenzione: Dovete scrivere SOLO una funzione, insomma niente main.

Esercizio 3

Scrivere una funzione che prende in input una matrice M ed un numero k. La matrice rappresenta una mappa semplificata di un territorio suddiviso in n x n caselle. L'elemento (i,j) di M corrisponde alla casella (i,j) del territorio.

M[i,j] = 0 se nella casella (i,j) del territorio c'e' acqua.

M[i,j] = 1 se nella casella (i,j) del territorio c'e' terra.

Le distanze tra' terra e acqua sono definite come segue:

Se M[i,j] = 0, allora la sua distanza dall'acqua e' 0.

Se M[i,j] = 1, e una delle sue caselle adiacenti (comprese quelle adiacenti in diagonale : ad esempio M[i+1,j+1]) ha il valore 0, la sua distanza dall'acqua e' 1.

In generale, se una casella di valore 1 circondata da 8 caselle tutte di valore uno che hanno rispettivamente distanza k1, k2, .. ,k8 dall'acqua, la sua distanza dall'acqua e' di distanza 1 + min{k1, .., k8} dall'acqua.

La funzione, prende in input una matrice M quadrata di dimensione n x n fatta come sopra, il numero n ed un intero k , e ritorna il numero di caselle della matrice che stanno a distanza k dall'acqua.

L'intestazione della funzione deve essere la seguente:

int terre_distanti (int ** M, int n, int k)



-- JulindaStefa - 11 Nov 2007

Edit | Attach | Watch | Print version | History: r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r3 - 2007-11-23 - JulindaStefa






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback