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 – a.a. 10 /11 – Terz o 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 ( ( A and not B ) or ( not B and not C ) or ( C and A ) ) Si stabilisca il minimo numero di bit sufficiente a rappresentare in complemento a due i numeri A = -206 e B = 31 , li si converta, s e ne calcoli 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. 3 Esercizio 2 ( 4 punti ) Il seguente schema descrive la base di dati di una libreria . AUTORE (NOME , ISBN LIBRO ) LIBRO (ISBN , TITOLO , EDITORE , GENERE , ANNO DIPUBBLICAZIONE ) CLIENTE (CODICE FISCALE , NOME , CITTÀ , PROVINCIA , DATA NASCITA ) VENDITA (CODICE FISCA LE, ISBN LIBRO , DATA , IMPORTO ) Estrarre il nome dell’autore che ha totalizzato il maggior inc asso nel 2010. Il seguente schema descrive la base di dati di una libreria. AUTORE (NOME , ISBN LIBRO ) LIBRO (ISBN , TITOLO , EDITORE , GENERE , ANNO DIPUBBLICAZIONE ) CLIENTE (CODICE FISCALE , NOME , CITTÀ , PROVINCIA , DATA NASCITA ) VENDITA (CODICE FISCA LE, ISBN LIBR O, DATA , IMPORTO ) Estrarre le città in cui non risiede alcun cliente che abbia comprato un libro di genere “saggio” . 5 Esercizio 3 ( 4 punti ) Si dic a cosa stampa il seguente codice #include #include #include int f( ch ar *a, char *b, int x ) { if( !x ) printf(" & "); else { printf("%c", b[x%2]); x = f( a, b, x -1 ); printf("%c", b[x%2]); } return x+1; } int main() { int i = 5 ; char bs[] = "BS", na[] = "NA"; ++i; printf("%c ", bs[ i%2]); i = f( bs, na, i -1 ); ++i; printf("%c", bs[ i%2]); system("PAUSE"); return 0; } Esercizio 4 ( 4 punti ) La matrice di interi M[ N][N] (con N costante predefinita) contiene degli interi generati a caso . Scrivere una funzione int f(int M[][ N]) che riceve la matrice M e restituisce quanti valori distinti contiene la matrice M . 7 Esercizio 5 ( 12 punti ) Un a società gestisce una catena di alberghi . I dati de gli alberghi e de lle rispettiv e camere sono orga nizzat i in list e. Le strutture dati utilizzate sono le seguenti: typedef struct Room { Albergo * albergo ; int numero; char doppiaOSingola; /* assume il valore ‘ d’ se doppia, ‘s’ se singo la */ struct Room * next; } Stanza ; typedef Stanza * Stanze ; typedef struct Hotel { char * nome ; char * indirizzo ; char * citta ; int numSingole ; int numDoppie; Stanze s; /* lista delle stanze dell’hotel */ struct Hotel * next; } Albergo; typedef Albergo * Alberghi; Si codifichi in C l a seguent e funzion e: int HotelCapienti (Alberghi A, int N ) che riceve in input la lista de gli alberghi A e l’intero N e restituisce il numero di alberghi della catena che possono ospitare almeno N ospiti . 9 Si codifichi in C l a seguent e funzion e: int correggiDatiAlberghi (Alberghi A ) che per ogni albergo verifica se i valori “numSingole” e “numDoppie” sono corretti (rispetto ai dati contenuti nella lista delle stanze di ogni albergo) , corregge quelli errati e restituisce il numero di alberghi per cui è stato necessario effettuare almeno una correzione . 11 Esercizio 6 ( 4 punti ) Si consideri la seguente definizione di un albero binario: typedef struct ET { char dato; struct ET * left; struct ET * right; } treeNode; typedef treeNode * tree; e la seguente definizione di lista typedef struct ch { char c; struct ch * next; } carattere ; typedef carattere * parol a; Si codifichi in C l a funzion e int f(tree t, parol a p) che restituisce 1 se per in almeno un percorso dalla radice alle foglie la s equenza di caratteri incontrata (ordinata dalla radice alla foglia) è esattamente l a parola contenuta nella lista p (si suggerisce l’uso di funzioni ausiliarie). 13