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 distribuiti , 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 non 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 ( 7 punti ) __________ Esercizio 5 ( 8 punti ) __________ Esercizio 6 ( 4 punti ) __________ Totale: ( 29 punti ) _________ 2 Esercizio 1 - Algebra di Boole, Aritmetica Binaria, Codifica 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 ( not B) and ( not C ) ) and ( A and B and C ) (b) Si stabilisca il minimo numero di bit sufficiente a rappresentare in complemento a due i numeri A = 19dec e B = –85dec , 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 ) Il seguente database descrive le liste dei candidati all e elezioni per il Senato Accademico e i voti scrutinati, che sono caricati man mano che si procede allo spoglio. CANDIDATO ( Lista , NomeCandidato ) VOTO SCRUTINATO ( CodiceProgressivo , Lista, Preferenza ) Le preferenze sono rappresentate dall’attributo Preferenza, che ha valore nullo se la preferenza non è stata espressa o è stata espressa in modo non valido Estrarre in SQL i nomi dei candidati che hanno avuto preferenze in numero compreso tra 2 e 5. 4 CANDIDATO ( Lista , NomeCandidato ) VOTO SCRUTINATO ( CodiceProgressivo , Lista, Preferenza ) Le preferenze sono rappresentate dall’attributo Preferenza, che ha valore nullo se la preferenza non è stata espressa o è stata espressa in modo non valido Estrarre in SQL il candidato con più preferenz e di ciascun a lista . 5 Esercizio 3 ( 4 punti ) Si dica cosa stampa il seguente codice #include #include #include #define N 10 typedef struct el { int os; char * cp; struct el * next; } elem; void f(char * s, elem ** e, int i) { if( i >= 4 ) return; (*e)[i].cp = (char *)malloc(1); *( (*(*e+i)).cp ) = s[0] + (*e+i) ->os; printf("%c", *((*e+i) ->cp) ); f( s+1, e, i+1 ); } void foo( elem v[], int i ) { int k = 1; while( i -- > 0 ) (*(v++)).os = k -- ; } int main() { char s[] = "BIBQ"; int so = sizeof(elem); elem * v = (elem *)malloc( 4 * so ); foo( v, 4 ); f( s, &v, 0 ); getch(); return 0; } 6 Esercizio 4 ( 7 punti ) Sia data la struttura dati typedef struct P { int i,j ; } Punto ; Si scriva una fu nzione float f(int M [][N], Punto P[]) che riceve in ingresso una matrice M quadrata NxN (con N costante predefinita con l’ istru zione #define N …) di interi positivi ed un array P di dimensione N di punti . La funzione cerca nella matrice i valori che stanno nelle caselle indicate dai punti dell’array P e restituisce la media dei valori trovati se tutte le coordinate sono valide (cioè se i punti sono realmente coordinate della matrice) o -1 se anche solo uno dei punti non è valido. 7 8 Esercizio 5 ( 8 punti ) Si consideri no due list e concatenat e semplic i di dati , una contenente dati di clienti e una di dati di spese effettuate dai clienti stessi . La struttura della list e è: typedef struct Date { int giorno; int mese; int anno; } Data; typedef struct Cli { int CodiceCliente ; char * cognome , * nome; int puntiAccumulati ; struct Cli * next } Cliente ; typedef Cliente * ListaDi Clienti ; typedef struct ES { char * nomeProdotto ; int prezzoUnitario; int quantitaAcquistata; struct ES * next; } ElementoScontrino; typedef ElementoScontrino * Scontrino; typedef struct Sp { int CodiceCliente; Scontrino s ; Data data; struct Vi * next; } Spesa; typedef Viaggio * Lista Di Viaggi ; Si codifichi una funzione che aggiorna automaticamente dopo ogni spesa i punti totali del cliente aggiungendo un punto per ogni 10 euro spesi (arrotondando per difetto) . Inoltre, i clienti che in un mese spendono più di 5000 euro hanno diritto a ricevere i l doppio dei punti su tutte le spese del mese . 9 10 11 Esercizio 6 ( 4 punti ) Si consideri la seguente definizione di albero: typedef struct n { char dato ; struct * left , * right ; } Node ; typedef Node * Tree ; Si codifichi in C un a funzione che stampa a video la “frase” formata dalla sequenza di caratteri posti sui nodi foglia, in ordine da quello più a sinistra fino a quello più a destra . 12 13 14