Laboratorio Algoritmi e Strutture Dati (Corso B)
-------------
Appelli
[09/12/03]
Data una struttura di albero (a scelta) di numeri reali, scrivere un programma C/C++ che implementi gli operatori della struttura ed inoltre realizzare le seguenti funzionalità (dimostrandone l’utilizzo):
- immissione e stampa (user-friendly) di un albero
- massimo: restituisce il massimo numero dell’albero ricevuto in input
- minore: dati due alberi, restituisce l’albero con il massimo inferiore tra i due (funzione precedente)
[11/11/03]
Implementare la struttura dati che permetta di memorizzare
una lista di rettangoli del piano cartesiano (RxR) (si possono memorizzare
le coordinate degli estremi dei rettangoli), che permette di:
- Inserire e stampare la lista di rettangoli
- Funzione/metodo inscritto che dati due rettangoli A e B restituisce
il valore vero se il rettangolo A è inscritto nel
rettangolo B
- Funzione/metodo epurazione che elimina dalla struttura
tutti i rettangoli inscritti in altri rettangoli usando la funzione/metodo inscritto
Ecco una soluzione data da uno studente:
clicca qui
[16/09/03]
Implementare una lista di rettangoli del piano cartesiano R x R (ad es. memorizzando le coordinate dei vertici alto-sinistra e basso-destra), comprendente anche i seguenti operatori:
- Inserimento (Lista::inserimento()) e stampa (Lista::stampa()) della lista di rettangoli
- Double Lista::maxarea() che calcoli la massima area tra quelle dei rettangoli della lista
- Lista Lista::nonoverlap()che restituisce la sottolista dei rettangoli che non si sovrappongono
Ecco una soluzione data da uno studente:
clicca qui
[08/07/03]
Implementare la struttura dati di tipo lista per la rappresentazione di polinomi di qualunque grado.
In più si chiede di implementare eval(p,x) di valutazione del polinomio p nel punto x e la somma/differenza di 2 polinomi
- definizione delle funzioni di immissione e stampa della lista implementata
- definizione della funzione eval(p,x), che valuti il polinomio p nel punto x
- definizione della funzione somma del polinomio p(x)
- definizione della funzione differenza del polinomio p(x)
Esempio di input/output: p(x)=3+2x+5x3+7.4x4
- INPUT: 3 2 0 5 7.4
- OUTPUT: 3+2x+5x^3+7.4x^4
- eval(p,2)=165.4 - sia q=4x+1.5x2
- somma(p,q): 3+6x+1.5x^2+5x^3+7.4x^4
- differenza(p,q): 3-2x-1.5x^2+5x^3+7.4x^4
[17/06/03]
Implementare la struttura dati di albero 3-ario (realizzazione a scelta), contenente una stringa per ogni nodo con gli operatori utili alla soluzione dei seguenti problemi:
- definizione delle funzioni di immissione e stampa dell'albero;
- definizione della funzione che, per ogni cammino, stampa le frase ottenuta concatenando le stringhe sui nodi che vi appartengono, separando le stringe dal carattere spazio.
[13/02/03]
La profondità di un albero binario è il massimo livello delle sue foglie. Si fornisca:
- la realizzazione in C o C++ di tale struttura, nella quale ogni nodo contiene un intero (fornire prove di inserimento e stampa dell'albero);
- la funzione che calcola la profondità dell'albero;
- la funzione che restituisce il totale degli interi contenuti in tutti i nodi;
- la funzione che restituisce il totale degli interi contenuti nelle foglie.
[19/12/02] - Esonero
Traccia a:
Fornendo una realizzazione in C++ della struttura dati di coda di caratteri numerici rappresentanti numeri interi lunghi a piacere, si implementino le funzioni richieste di seguito:
- inserimento nella coda di stringa di caratteri numerici letti da tastiera
- creazione della funzione di stampa a video del contenuto della coda
- funzione che calcola la coda contenente la somma dei numeri contenuti nelle due code passate in input
Dimostrare il corretto funzionamento delle funzioni mediante opportuno main.
Traccia b:
Fornendo una realizzazione in C++ della struttura dati di coda di caratteri numerici rappresentanti numeri interi lunghi a piacere, si implementino le funzioni richieste di seguito:
- inserimento nella coda di stringa di caratteri numerici letti da tastiera
- creazione della funzione di stampa a video del contenuto della coda
- funzione che calcola la coda contenente la differenza dei numeri contenuti nelle due code passate in input
Dimostrare il corretto funzionamento delle funzioni mediante opportuno main.