- userLoginStatus
Welcome
Our website is made possible by displaying online advertisements to our visitors.
Please disable your ad blocker to continue.
Mathematical Engineering - Informatica A
First partial exam
Informatica A – a.a. 10 /11 – Primo Appello Cognome ________________________________ Matricola _______________________ Nome ________________________________ _______ Istruzioni • Non separate questi fogli. Scrivete la soluzione solo sui fogli distribuiti , utilizzando il retro delle pagine in caso di necessità. Cancellate le parti di brutta (o ripudiate) con un tratto di penna . • Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione. • È possibile scrivere a m atita (e non ricalcare al momento della consegna). • È vietato utilizzare calcolatrici o telefoni . Chi tenti di farlo vedrà annullata la sua prova. • È ammessa la consultazione di libri e appunti , purché con pacata discrezione e senza disturbare. • Qualsiasi ten tativo 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: 2h3 0m Esercizio 1 ( 2 punti ) __________ Esercizio 2 ( 4 punti ) __________ Esercizio 3 ( 4 punti ) __________ Esercizio 4 ( 4 punti ) __________ Esercizio 5 ( 12 punti ) __________ Esercizio 6 ( 4 punti ) __________ Totale: ( 30 punti ) __________ Voto finale: __________ Esercizio 1 ( 2 punti ) Si costruisca la tabella di verità del la seguente espressione booleana. ( (not C) and B ) or ( ( not A ) and B) ) Si stabilisca il minimo numero di bit sufficiente a rappresentare in complemento a due i numeri A = -102 e B = 12, li si converta, se ne calcoli la somma (A-B) in complemento a due e si indichi se si genera riporto sulla colonna dei bit più significativi e se si verifica overflow. 3 Esercizio 2 ( 4 punti ) Il seguente schema descrive la base di dati di un concessionario di autoveicoli multimarca . VEICOLO (CODIC EVEICOLO , MARCA , MODELLO , ALLESTIMENTO ) CLIENTE (CODICE FISCALE , NOME , CITTÀ , PROVINCIA , DATA NASCITA ) VENDITA (CODICE FISCA LE, CODICE VEICOLO , DATA , NUMERO FATTURA , IMPORTO ) Estrarre la Marca di Veicolo che produce modelli mai venduti in prov incia di “Milano”. Il seguente schema descrive la base di dati di un concessionario di autoveicoli multimarca. VEICOLO (CODIC EVEICOLO , MARCA , MODELLO , ALLESTIMENTO ) CLIENTE (CODICE FISCALE , NOME , CITTÀ , PROVINCIA , DATA NASCITA ) VENDITA (CODICE FISCA LE, COD ICE VEICOLO , DATA , NUMERO FATTURA , IMPORTO ) Estrarre l'elenco delle vendite aventi un importo superiore all’importo del 90% delle vendite. 5 Esercizio 3 ( 4 punti ) Si dice cosa stampa il seguente codice e si spieghi cosa calcola la funzione f #include int f(int c,int d); int main(){ int c; c=f(2,3); printf ("c = %d \n", c); c=f(4,2); printf ("c = %d \n", c); c=f(2,4); printf ("c = %d \n", c); c=f(3,3); printf ("c = %d \n", c); } int f(int d,int e ){ if( e > 0 ) return f(d,e -1) + f(d,e -1); else return d; } Esercizio 4 ( 4 punti ) Scrivere una funzione int f(int m[][N], int v[], int k) che riceve una matrice NxN di interi , un vettore di interi di lunghezza M (con N e M costanti globali definite con una #define) e un intero k e restituisce 1 se esiste una riga o una colonna o una diagonale che contiene tutti gli elementi del vettore nello stesso ordine o in ordine inverso con esattamente k eccezioni , 0 altrimenti. 7 Eser cizio 5 ( 12 punti ) Un a società gestisce la distribuzione di prodotti distribuiti da contadini. I dati della società sono organizzat i nel seguente modo: i contadin i sono disposti in una lista , ogni contadino ha associata una lista di prodotti . Le strut ture dati utilizzate sono le seguenti: typedef struct Product { char * nome, categoria ; int prezzoAlKg ; struct Product * next; } Prodotto; typedef Prodotto * Lista Prodott i; typedef st ruct Peasant { char * cognome, nome ; Lista Prodotti prodott i; struct Peasant * next; } Contadino ; typedef Contadin o * ListaContadini; Si codifichi in C l a seguent e funzion e: float mediaPrezziProdotto (List aContadini contadin i, char * prodott o) che riceve in input la lista dei contadini e il nome di un prodotto e restituisce la media dei prezzi praticata dai contadini per quel prodotto. 9 Si codifichi in C l a seguent e funzion e: int eliminaProdotto (List aContadini contadin i, char * prodott o) che elimina un prodotto dalle liste di tutti i contadini qualora quest o esista e restituisce il numero di contadini da cui è stato eliminato. Qualora per un contadino quel prodotto fosse l’unico anche il contadino dev’essere eliminato dal la lista dei contadini. 11 Esercizio 6 ( 4 punti ) Si consideri la seguente definizione di un albero binario: typedef struct ET { int * dato; struct ET * left; struct ET * right; } treeNode; typedef treeNode * tree; Definiamo grado di un livello di un albero la somma degli elementi appartenenti al livello stesso. Una coppia alberi t1 e t2 si dice k -similare se t1 ha esistono almeno k livelli in t1 e in t2 di pari grado. Nota: non è necessario che i livelli di pari grado siano lo stesso livello nei due alberi. Si supponga, per semplicità, che all'interno dello stesso albero non esistano due livelli dello stesso grado. Si codifichi in C l a seguent e funzion e: int ksimi lare (tree t1, tree t2, int k ) che restituisce 1 se t1 e t2 sono k -similari, 0 altrimenti. 13