Esame Di Programmazione (Mod A) - CDL Aida: Gcaravagna@Units - It
Esame Di Programmazione (Mod A) - CDL Aida: Gcaravagna@Units - It
1 Istruzioni
L’appello contiene 6 esercizi (A1, A2, A3, B1, B2, B3) da risolvere in 3 ore. Il template si trova su Moodle in formato
ZIP, su Moodle dovete carica la vostra soluzione.
Importante. A1, A2 e A3 sono di sbarramento e permettono di raggiungere 18/30. B1, B2 e B3 valgono fino al
raggiungimento del voto massimo di 30/30.
Risoluzione degli esercizi di sbarramento. Usando repl.it, risolvete l’esercizio partendo dal file main.c e testate
il codice con i comandi make test1, make test2 e make test3. Prima di ogni test ricordatevi di digitare make clean.
3 Esercizi opzionali
3.1 Es. B1 (6 punti)
In C, si vogliono definire liste linkate che possono memorizza un array di interi in ciascun loro elemento; si desidera
inoltre permettere agli array di avere dimensione variabile, e.g., una lista potrebbe essere
// struttura
struct elemento{
// dato memorizzato
...
// puntatore
struct elemento * next;
};
// tipi
typedef struct elemento ElementoDiLista;
typedef ElementoDiLista * ListaDiElementi;
ListaDiElementi init(int n)
void print(ListaDiElementi lista)
dove i) init costruisce una lista di un singolo elemento, il quale contiene un array di n > 0 elementi , e ii) print
stampa ricorsivamente la lista, mostrando ad esempio (dopo la init)
print_list(list);
// -> n = 4 | 0, 0, 0, 0,
list->next = init(12);
print_list(list);
// -> n = 4 | 0, 0, 0, 0,
// -> n = 12 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, %
Suggerimento. Se gli array hanno dimensione variabile, la gestione della memoria deve essere esplicita.
int x = 6;
int * y = (int *) malloc(sizeof(int));
*y = x;
Si rappresenti la memoria del programma ai punto A e B per ciascun ciclo di esecuzione del for.
def f1(x)
return x**2 + 2x
def f2(x)
return x**2 + 2x - 1
Si progetti una classe Obj abbastanza generale da considerare tutti i polinomi di secondo grado p(x), con un metodo
per calcolare p(x) per un x fissato, e si istanzino oggetti o1 ed o2 per rappresentare le computazioni fatte da f1(x)
ed f2(x).