- 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
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 not ( ( not A ) and ( not B ) and ( not C ) ) (b) Si stabilisca il minimo numero di bit sufficiente a rappresentare in complemento a due i numeri A = 27dec e B = –111 dec , 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 ripo rto sulla colonna dei bit più significativi e se si verifica overflow (1 punto). 3 Esercizio 2 ( 4 punti ) Il seguente schema rappresenta i dati relativi a una scuola materna. MAESTRA( CodiceFiscale , Nome, Cognome, Specializzazione) CLASSE( ID , Nom e, Colore) INSEGNAMENTO( IDClasse, CFMaestra ) BAMBINO( CodiceFiscale , Nome, Cognome, DataDiNascita, IDClasse, DataIscrizione) Scrivere la query che estrae il bambino iscritto più di recente. 4 Il seguente schema rappresenta i dati relativi a una scuola mate rna. MAESTRA( CodiceFiscale , Nome, Cognome, Specializzazione) CLASSE( ID , Nome, Colore) INSEGNAMENTO( IDClasse, CFMaestra ) BAMBINO( CodiceFiscale , Nome, Cognome, DataDiNascita, IDClasse, DataIscrizione) Scrivere in SQL la query che estrae la maestra che si occupa complessivamente di più bambini. 5 Esercizio 3 ( 4 punti ) Si dica cosa stampa il seguente codice #include #include int f(char * str, int k) { int i,x=k+1; if( strlen( str+k ) > 0 ) { i = f(str, x); printf("%c", st r[k] + x%4 ); return i; } return 1; } int main() { char inutile; char v[6]="DTBRA"; int a=0; a = f(v, a); scanf("%c",inutile); return 0; } 6 7 Esercizio 4 ( 6 punti ) Si scriva una fuzione int f(int M [][N], int A[]) che riceve in in gresso 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 restituisce 1 se almeno uno degli elementi di A è divisore di tutti gli elementi di una qualsiasi riga di M. 8 9 Esercizio 5 ( 7 punti ) Si consideri la seguente struttura dati per gestire i numeri di una rivista: typedef struct { int giorno; int mese; int anno; } Data; typedef struct { char cognome[100], nome[100]; int eta; /* età della persona */ } Persona; typedef struct Aut { Persona p; struct Aut * next ; } Autore; typedef Autore * ListaAutori; typedef struct Art { ListaAutori autori ; char Titolo[1000]; int pagina; struct Art * next; } Articolo; typedef struct Riv { int numero; Data dataPubblicazione; char Titolo[1000]; struct Riv * next; } Rivista; typedef Rivista * ListaDiRiviste; Si codifichi una funzione che, ricevuta in ingresso una lista di riviste ordinata per data decrescente , restituisca la lista degli autori (senza duplicati) che hanno pubblicato sulla rivista , ordin ati in base alla data del primo articolo pubblicato sulla ri vista stessa. 10 11 Esercizio 6 ( 8 punti ) Si consideri la seguente definizione di un albero binario typedef struct EL { int dato; struct EL * left, right; } node; typedef node * tree; Scrivere una funzione che, ricevuto in ingress o un albero binario , restituisca il massimo comun divisore (MCD) tra tutti gli elementi contenuti nell’albero. Si consiglia fortemente l’uso di funzioni ausiliarie . Si ricorda che è sempre vero che MCD(x,y,z)=MCD(MCD(x,y),z)=MCD(x, MCD(y,z)) 12 13 14