logo
  • userLoginStatus

Welcome

Our website is made possible by displaying online advertisements to our visitors.
Please disable your ad blocker to continue.

Current View

Mathematical Engineering - Informatica A

Full exam

Informatica A Cognome ________________________________ Matricola _______________________ Nome ________________________________ Firma _______________________ Istruzioni • Non separate questi fogli. Scrive te la soluzione solo sui fogli d istribuiti , utilizzando il retro delle pagine in caso di necessità . Cancella te le parti di brutta (o ripudiate) con un tratto di penna . • Ogni parte non cancellata a penna sarà considerata parte integrante della sol uzione. • È possibile scrivere a matita (e no n ricalcare al momento della consegna!). • È vietato utilizzare calcolatrici o telefoni . Chi tenti di farlo ved rà annullata la sua prova. • È ammessa la consulta zion e di libri e appunti , purché con pacata discrezione e senza disturbare. • Qualsiasi tentativo di comunicare con altri studenti comporta l’espulsione dall’aula. • È possibile ritirarsi senza penalità . • Non è possibile lasciare l’aula conservando il tema della prova in corso. • Tempo a disposizione: 2 h 30 m Valore degli esercizi, voti parziali e voto finale : Esercizio 1 ( 2 punti ) __________ Esercizio 2 ( 4 punti ) __________ Esercizio 3 ( 4 punti ) __________ Esercizio 4 ( 6 punti ) __________ Esercizio 5 ( 5 punti ) __________ Esercizio 6 ( 8 punti ) __________ Totale: ( 29 punti ) _________ 2 Esercizio 1 - Algebra di Boole, Aritmetica Binaria, C odifica delle Informazioni (2 punti) (a) Si costruisca la tabella di verità della seguente espressione booleana, badando alla precedenza tra gli operatori logici. (1 punto). ( A or B or C ) or ( A and B and C ) (b) Si stabilisca il minimo nu mero di bit sufficiente a rappresentare in complemento a due i numeri A = 29dec e B = –11 5dec , li si converta , se ne calcolino la somma (A+B) e la differenza (A –B) in complemento a due e si indichi se si genera riporto sulla colonna dei bit pi ù significativi e se si verifica overflow (1 punto). 3 Esercizio 2 ( 4 punti ) Si consideri il seguente schema: DIPENDENTE( codice , nome, qualifica, settore) VIAGGIO( codice , dipendente, citta, data, km, targa -auto) AUTO( targa , modello, costo -km) DES TINAZIONE( citta , stato) Esprimere in SQL l’interrogazione che estrae il nome dei dipendenti che non hanno mai viaggiato fuori dall’Italia. 4 Si consideri il seguente schema: DIPENDENTE( codice , nome, qualifica, settore) VIAGGIO( codice , dipendente, citta, dat a, km, targa -auto) AUTO( targa , modello, costo -km) DESTINAZIONE( nome , stato) Esprimere in SQL l’interrogazione che mostra per ogni dipendente il totale dei chilometri percorsi. 5 Esercizio 3 ( 4 punti ) Si dica cosa stampa il seguente codice #define dim 5 #include #include #include typedef struct item { char dato ; struct item * next; } Item; typedef Item * lista; list a mistero (lista L ) { list a temp = L; while (temp ->next != NULL) temp = temp ->next; temp ->next = (lista) malloc(sizeof(Item)); temp ->next ->next = NULL; temp ->next ->dato = L->dato ; return L->next; } int main(void) { lista L , temp; int i; L = (lista) malloc(sizeof(Item)); L->next = NULL; L->dato = 'e'; for (i=1; inext = L; temp ->dato = 'e' - i; L = temp; } L = mistero (L); while ( L != NULL) { printf("%c ", L->dato ); L = L->next; } getch(); return (0); } 6 Esercizio 4 ( 6 punti ) Si scriva una fuzione int f(int M [][N], int A[]) che riceve in ingresso una matrice quadrata NxN (con N costante predefinita con l’struzione #define N …) di interi positivi M ed un array A di dimensione N. La funzione copia in A (riempiendo a da sinistra a destra senza lasciare buchi) gli elementi della diagonale principale di M che sono presenti anche nel triangolo al di sopra della diagonale principale (a eventuali caselle non usate in fondo ad A dovrà essere assegnato il valore -1) e rest ituisce il numero di elementi copiati. Nel caso della matric e M in figura, A conterrà i valori 1, 3, -1, -1, -1 e la funzione restituirà 2. 0 1 2 3 4 0 16 0 3 0 0 1 3 1 1 2 1 2 0 0 13 0 0 3 0 7 2 3 2 4 0 5 1 6 4 7 8 Esercizio 5 ( 5 punti ) Si consideri no due list e concatenat e semplic i di dati , una contenente dati di impieg ati e una contenente dati di viaggi di lavoro degli impiegati . La struttura della list e è: typedef struct Date { int giorno; int mese; int anno; } Data; typedef struct { char * c itta ; char * stato ; } D estinazione ; typedef struct I mp { int matricola ; char * cognome , * nome; int giorniDiFerieMaturati ; struct Im p * next } Impiegato ; typedef Impiegato * ListaDi Impiegati ; typedef struct Vi { int matricola ; Destinazione d; Data data Inizio, data Fine ; struct Vi * next; } Viaggio ; typedef Viaggio * Lista Di Viaggi ; Si codifichi una funzione che, ricevuta in ingresso una lista di impiegati e una lista di viaggi , aumenti di uno i giorni di ferie maturati d a un impiegato per ogni viaggio all’estero di durata superiore a sette giorni . 9 10 Esercizio 6 ( 8 punti ) Si consideri la seguente definizione di un albero binario typedef struct EL { int dato; struct EL * left, right; } node; type def node * tree; Scrivere una funzione che, ricevuto in ingresso un albero binario , restituisca la somma dei soli valori pari contenuti nell’albero. 11 Scrivere una funzione che, ricevuto in ingresso un albero binario , restituisca una lista di interi cont enente i soli valori pari contenuti nell’albero. Si consiglia fortemente l’uso di funzioni ausiliarie 12 13