Ciao a tutti,
voglio chiedervi una cortesia:
ho da implementare dei programmi in C++ entro il 17 giugno i quali poi dovrò presentare per un esame.
Mi appello alla clemenza di voi tutti!!!!!
Di seguito troverete una lista delle possibili tracce!!!!!!!!
Grazie!!!



Programmi (possibili tracce)


 Gestione di stringhe: contare i diversi caratteri ordinarli scrivere e leggere stringhe

 Usando le operazioni bit a bit simulare le operazioni aritmetiche su interi.

 Data una espressione aritmetica definire la sua notazione postfissa e infissa.

 Definire una struttura stack usando un vettore unidimensionale.

 Definire una struttura stack usando una lista linkata.

 Data una espressione aritmetica in forma postfissa calcolarla usando uno stack.

 Date una serie di linee di programma con assegnazioni e operazioni aritmatiche calcolarne il valore. Esempio a=5; b=a+2; d=a+b; calcolare i valori di a,b e c.

 Ordinamenti di stringhe e di numeri: merge sort, Quick sort, scambio, alberi etc-. Usando menu e puntatori a funzioni (typedef).

 Alberi , liste e pile viste come classi e template.

 Dati due file a e b costruire un nuovo file c il cui primo elemento è il primo elemento di a il secondo è il primo elemento di b il terzo è il secondo elemento di a etc..

 Costruire un programma che gestisca le date e il tempo, guardare il programma “date” (lez. 5 lucidi C++) e il programma time (lez 6 lucidi C++)

 Costruire una classe che simuli la gestione delle liste in programmazione funzionale e che abbia come funzioni pubbliche il car il cdr il cons e la possibilità di comporre le suddette funzioni e di usare i costrutti lambda e define.

 Implementare una lista bidirezionale con i puntatori; ogni campo della lista contiene un intero. ordinare la lista con uno degli ordinamenti che avete studiato. Implementare (almeno) gli operatori dell'algebra utili alla soluzione. La realizzazione è richiesta in linguaggio C++.

 Il tipo di dato dequeue (double ended queue) è una sequenza modificabile ad entrambi gli estremi, in cui è possibile inserire un elemento in testa o in fondo, e/o cancellare un elemento dalla testa o dal fondo. Fornire una realizzazione in C++ di tale tipo di dato, mediante puntatori, implementando gli operatori di inserimento e cancellazione dalla testa e dalla coda

 La profondità di un albero è il massimo livello delle sue foglie. Si fornisca una realizzazione in C++ di tale struttura (a scelta fra quelle che conoscete, scrivendo gli operatori utili alla soluzione) e la funzione che calcola la profondità dell’albero.

 Si fornisca una realizzazione in C++ di un albero (a scelta fra quelle che conoscete) i cui nodi contengono valori interi.. Dopo aver scritto gli operatori necessari alla soluzione, si implementi la funzione che cancella tutte le foglie per le quali il percorso radice-foglia ha somma complessiva dei valori uguale a k.

 Dati due insiemi realizzati con liste non ordinate, realizzare in C++ la funzione INTERSEZIONE, implementando (almeno) gli operatori dell’algebra utili alla soluzione.

 Realizzare il quicksort su un vettore di interi in C o in C++, con ordine decrescente.

 Scrivere in C++ l’implementazione di due liste monodirezionali ordinate, realizzate con i puntatori, (scrivere gli operatori utili alla soluzione del problema). Scrivere la funzione che le fonde, restituendo una unica lista ordinata

 Data una pila realizzata con puntatori, scrivere la funzione C++ che restituisce la pila rovesciata. Scrivete gli operatori utili alla soluzione del problema.

 Dato un grafo realizzato con matrice di adiacenza, realizzare in C (o C++) la funzione che restituisce il numero di archi afferenti ad un nodo n. Scrivete tutti gli operatori utili alla soluzione del problema.

Dato un albero i cui nodi contengno valori interi, scrivere gli operatori tipici di tale struttura (in particolare, l’inserimento e la cancellazione di una foglia), e elencare i valori contenuti nei nodi effettuando una visita in ampiezza.