Il 0% ha trovato utile questo documento (0 voti)
13 visualizzazioni2 pagine

Testo 10

Caricato da

renzonitommaso2
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
13 visualizzazioni2 pagine

Testo 10

Caricato da

renzonitommaso2
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 2

Algoritmi e Strutture Dati – Prova di Laboratorio

23/02/2023

Istruzioni
Risolvere il seguente esercizio implementando un programma in un singolo file .cpp, completo
di funzione main. Si presti particolare attenzione alla formattazione dell’input e dell’output,
e alla complessità target indicata per ciascuna funzionalità. Nel caso la complessità target
non sia specificata, si richiede che sia la migliore possibile. La lettura dell’input e la scrittura
dell’output DEVONO essere effettuate tramite gli stream cin e cout rispettivamente. La
correzione avverrà prima in maniera automatica inviando il file .cpp al server indicato in aula.
Quest’ultimo esegue dei test confrontando l’output prodotto dalla vostra soluzione con l’output
atteso. In caso la verifica abbia esito positivo sarà possibile consegnare il compito, il quale verrà
valuato dai docenti in termini di complessità. Si ricorda che è possibile testare la correttezza
del vostro programma in locale su un sottoinsieme dei input/output utilizzati nella seguente
maniera. I file di input e output per i test sono nominati secondo lo schema: input0.txt
output0.txt input1.txt output1.txt ... Per effettuare le vostre prove potete utilizzare il
comando del terminale per la redirezione dell’input. Ad esempio

./compilato < input0.txt

effettua il test del vostro codice sui dati contenuti nel primo file di input, assumendo che
compilato contenga la compilazione della vostra soluzione e che si trovi nella vostra home di-
rectory. Dovete aspettarvi che l’output coincida con quello contenuto nel file output0.txt. Per
effettuare un controllo automatico sul primo file input input0.txt potete eseguire la sequenza
di comandi

./compilato < input0.txt | diff - output0.txt

Questa esegue la vostra soluzione e controlla le differenze fra l’output prodotto e quello corretto.

1
Esercizio
Si consideri un sistema per la gestione di alberi binari di ricerca (ABR) in grado di memorizzare
nodi ad etichette intere.
Dato un nodo x, si definisce dx come la distanza tra x e la radice dell’albero. Si definisce
inoltre lx come la massima distanza tra x e le foglie contenute nel sottoalbero radicato in esso;
Infine, un nodo x si dice mediano se i valori di lx e dx differiscono al piú di uno.
Si scriva un programma che

• legga da tastiera N etichette e le inserisca all’interno dell’ABR. I valori devono essere


inseriti nello stesso ordine con cui vengono letti (le etichette ≤ vanno inserite a sinistra);

• stampi al piú le etichette dei primi K nodi mediani ordinati per etichetta in maniera non
decrescente.

L’input é formattato nel seguente modo: la prima riga contiene gli interi N e K separati da
uno spazio. Seguono N righe contenenti un’etichetta ciascuna.
L’output contiene gli elementi della soluzione, uno per riga.

Esempio

Input 10

6 2
10
5 5 20
20
15
30
25
15 30
Output

5
20 25

Potrebbero piacerti anche