esercizi_programmazione_struct_malloc_recursion
esercizi_programmazione_struct_malloc_recursion
1. Scrivere un programma che legga da linea di comando una sequenza di parole e poi
stampi la parola più lunga insieme alla sua lunghezza. Per il calcolo della lunghezza di una
parola scrivere una funzione che prenda in input una parola e ne restituisca la lunghezza.
2. Definire una struttura di nome punto con i campi x e y di tipo double. Scrivere una
funzione distanza che dati due parametri di tipo punto restituisce la distanza Euclidea tra i
due punti.
Scrivere una funzione lunghezzaPoligonale che riceve come parametro un array di punti
che rappresentano una poligonale e calcola la lunghezza complessiva della poligonale.
Scrivere un programma che fa inserire l’utente una sequenza di punti (la lunghezza della
sequenza è scelta dall’utente) e stampa la lunghezza complessiva della poligonale
rappresentata dai punti inseriti. I punti possono essere inseriti uno dopo l’altro fino
all’inserimento della parola “stop”, oppure si può chiedere prima all’utente il numero di
punti che desidera inserire.
Prevedere due varianti del codice, una con allocazione statica dell’array di punti e una con
allocazione dinamica.
3. Scrivere un programma C che definisce una struttura dati in grado di contenere le
informazioni relative ad un campionato di calcio:
o nome squadra (stringa di lunghezza 20);
o codice squadra (intero);
o goal fatti (intero);
o goal subiti (intero).
Si memorizzino le seguenti informazioni in un array di strutture:
{{"lecce", 1, 10, 12},
{"juventus", 8, 7, 6},
{"inter", 10, 13, 11},
{"roma", 2, 9, 10},
{"milan", 5, 8, 4},
{"fiorentina", 14, 5, 7}}
Si stampino tutti i nomi e codici delle squadre che hanno fatto un numero di goal maggiore
del numero dei goal subiti.
Letto da terminale il codice di una squadra si stampi a video il nome della squadra, i goal
fatti e i goal subiti.
6. Scrivere due programmi che leggano una sequenza di interi e la stampino al contrario,
allocando la memoria necessaria in modo dinamico attraverso l’uso della funzione malloc.
a. Nel caso in cui l’input sia dato da un intero n e da una sequenza di n numeri;
b. Nel caso in cui l’input sia dato da una sequenza di numeri terminata dalla parola "stop";
Suggerimento: non potendo prevedere quanti numeri verranno inseriti, l’array andrà
ridimensionato man mano: a partire da una dimensione piccola (ad es. 5 elementi) e
aggiungendo una quantità fissa di elementi (ad es. 5) ogni volta che l’array già allocato
si riempie.
1
7. Definire una funzione che sia tail recursive e calcoli il massimo di un array di interi.
Definire una funzione che legga da tastiera la sequenza di interi di cui calcolare il massimo
e la restituisca al chiamante.
Scrivere un programma che usi le due funzioni precedenti e poi stampi il massimo della
sequenza letta dall’utente.
8. Scrivere una funzione che crea e restituisce una matrice di dimensioni n x m, passate
come parametri, e la inizializza con valori random tra -100 e 100.
Scrivere un programma che chiama la funzione precedente per creare due matrici di
dimensioni fissate da linea di comando e ne effettua la somma elemento per elemento.
Stampare la matrice somma.