Strumenti Utente

Strumenti Sito


fisica:informatica:201516:secondoanno:laboratorio_12

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Prossima revisione
Revisione precedente
fisica:informatica:201516:secondoanno:laboratorio_12 [18/05/2016 alle 07:59 (8 anni fa)] – creata Roberta Gorifisica:informatica:201516:secondoanno:laboratorio_12 [18/05/2016 alle 08:08 (8 anni fa)] (versione attuale) – [Esercizio 3] Roberta Gori
Linea 5: Linea 5:
 <code> <code>
 albero_s_t albero_s_t
-<\code>+</code>
  di un albero binario in cui le etichette sono stringhe di al piu' 20  di un albero binario in cui le etichette sono stringhe di al piu' 20
-caratteri. Scrivere una funzione +caratteri. 
 + 
 + Scrivere una funzione  
 +<code>
 int conta_occorrenze ( albero_s_t * root, char * s );  int conta_occorrenze ( albero_s_t * root, char * s ); 
 +</code>
 che conta le occorrenze della stringa  che conta le occorrenze della stringa 
 s s
Linea 14: Linea 18:
 root root
  e restituisce tale numero.   e restituisce tale numero. 
-2Definire il tipo + 
 + 
 +===== Esercizio ===== 
 +Definire il tipo  
 +<code>
 albero_d_t albero_d_t
 +</code>
  di un albero binario in cui le etichette sono valori di tipo   di un albero binario in cui le etichette sono valori di tipo 
-double +double. 
-.+
 Scrivere una funzione  Scrivere una funzione 
 +<code>
 double somma_le_foglie ( albero_d_t * root); double somma_le_foglie ( albero_d_t * root);
 +</code>
 che restituisce la somma dei valori delle etichette delle sole foglie dell'albero.  che restituisce la somma dei valori delle etichette delle sole foglie dell'albero. 
-3)Utilizzando il tipo + 
 + 
 +===== Esercizio ===== 
 +Utilizzando il tipo  
 +<code>
 albero_d_t albero_d_t
 +</code>
  dell'esercizio precedente. Scrivere una procedura  dell'esercizio precedente. Scrivere una procedura
 +<code>
 void  leggi_albero ( albero_d_t **  root) ; void  leggi_albero ( albero_d_t **  root) ;
 +</code>
 che legge da standard input una sequenza di valori double terminata da EOF e restituisce il che legge da standard input una sequenza di valori double terminata da EOF e restituisce il
 puntatore ad un nuovo albero che contiene tutti i valori letti. L'albero deve essere costruito in modo puntatore ad un nuovo albero che contiene tutti i valori letti. L'albero deve essere costruito in modo
Linea 31: Linea 49:
 n n
  tutti i valori nel sottoalbero sinistro devono essere minori o  tutti i valori nel sottoalbero sinistro devono essere minori o
-uguali del valore in  +uguali del valore di 
-n +n, mentre i valori nel sottoalbero destro devono essere tutti maggiori o uguali di 
-, mentre i valori nel sottoalbero destro devono essere tutti maggiori o uguali di +n.  
-n +
-+
 Verificare che stampando i valori delle etichette con una visita simmetrica otteniamo una sequenza Verificare che stampando i valori delle etichette con una visita simmetrica otteniamo una sequenza
 crescente.  crescente. 
-4)Utilizzando il tipo + 
 +===== Esercizio ===== 
 +Utilizzando il tipo  
 +<code>
 albero_d_t albero_d_t
 +</code>
  dell'esercizio precedente, scrivere una funzione che trasforma  dell'esercizio precedente, scrivere una funzione che trasforma
 l'albero in una lista di double inserendo le etichette nell'ordine della visita anticipata  l'albero in una lista di double inserendo le etichette nell'ordine della visita anticipata 
 +<code>
 lista_d_t * tree_to_list ( albero_d_t * root ); lista_d_t * tree_to_list ( albero_d_t * root );
-5Dato il tipo +</code> 
 + 
 +===== Esercizio ===== 
 + Dato il tipo  
 +<code>
 albero_d_t albero_d_t
 +</code>
  dell'esercizio precedente, scrivere una procedura  che stampa la visita a  dell'esercizio precedente, scrivere una procedura  che stampa la visita a
 livelli dell'albero. Suggerimento: utilizzare un array per memorizzarsi i puntatori ai figli... livelli dell'albero. Suggerimento: utilizzare un array per memorizzarsi i puntatori ai figli...
-6) + 
- Un albero binario di ricerca e' un albero in cui in ogni nodo  +===== Esercizio ===== 
-n + Un albero binario di ricerca e' un albero in cui in ogni nodo n  e' verificata la relazione  
- e' verificata la relazione  +Etichetta(nsx)≤Etichetta(n)≤Etichetta(ndx) dove nsx e' un qualsiasi nodo dell'albero di sinistra e ndx e' un qualsiasi nodo dell'albero di destra.
-+
-( +
-nsx +
-) +
- +
-+
-( +
-n +
-) +
- +
-+
-( +
-ndx +
-) +
-dove  +
-nsx +
- e' un qualsiasi nodo dell'albero di sinistra e  +
-ndx +
- e' un qualsiasi nodo dell'albero di destra.+
 Utilizzando il tipo  Utilizzando il tipo 
 +<code>
 albero_d_t albero_d_t
 +</code>
  realizzate le seguenti funzioni/procedure (a scelta):   realizzate le seguenti funzioni/procedure (a scelta): 
 +<code>
 /* inserisce l'etichetta x nell'albero mantenedolo ordinato,  restituisce il puntatore al nuovo albero */ /* inserisce l'etichetta x nell'albero mantenedolo ordinato,  restituisce il puntatore al nuovo albero */
 ...... inserisci_ord ( ......, double x ); ...... inserisci_ord ( ......, double x );
 +
 /* ricerca l'etichetta x nell'albero analizzando un numero di nodi pari all'altezza dell'albero  /* ricerca l'etichetta x nell'albero analizzando un numero di nodi pari all'altezza dell'albero 
  restituisce 1 se la trova e 0 se non la trova */  restituisce 1 se la trova e 0 se non la trova */
 int inserisci_ord ( albero_d_t * root, double x ); int inserisci_ord ( albero_d_t * root, double x );
 +
 /* cancella l'etichetta x nell'albero mantenedolo ordinato e deallocando l'etichetta (difficile!) /* cancella l'etichetta x nell'albero mantenedolo ordinato e deallocando l'etichetta (difficile!)
 restituice il puntatore al nuovo albero */ restituice il puntatore al nuovo albero */
 ......... cancella_ord ( ........., double x ); ......... cancella_ord ( ........., double x );
 +</code>
fisica/informatica/201516/secondoanno/laboratorio_12.1463558361.txt.gz · Ultima modifica: 18/05/2016 alle 07:59 (8 anni fa) da Roberta Gori

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki