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

First partial exam

1 Informatica A Cognome ________________________________ Matricola _______________________ Nome ________________________________ Firma _______________________ 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 part e integrante della soluzione. È possibile scrivere a matita (e non occorre ricalcare al momento della consegna!). È vietato utilizzare calcolatrici, telefoni o pc . Chi tenti di farlo vedrà annullata la sua prova. È ammessa la consultazione di libri e appun ti, 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: 2h 30min Valore indicativo degli esercizi, voti parziali e voto finale: Esercizio 1 ( 2 punti ) __________ Esercizio 2 ( 4 punti ) __________ Esercizio 3 ( 4 punti ) __________ Esercizio 4 ( 4 punti ) __________ Totale: ( 14 punti ) _________ 2 Esercizio 1 (2 punti) Si costruisca la tabella di verità della seguente espressione booleana. A and ( not ( B or C ) or ( A or (C or B) ) ) Si stabilisca il minimo numero di bit sufficiente a rappresentare in complemento a due i numeri A = 11 5dec e B = –12 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 riporto sulla colonna dei bit più significativi e se si verifica overflow . 3 Esercizio 2 (4 punti) Si dica cosa stampa il seguente codice e si dica cosa calcolano le funzioni f, g e h : #include #define N 10 int f(int x, int y); int g(int x, int y); int h(int x, int y); int main() { int a[N]={1,1,2,3,15,18,26,21,34,55}, b[N]={1,4,2,2,5,8,13,7,14,5}, k; for (k=0;k=y) x=x -y; return x; } int g(int x, int y) { return x/y*y; } int h(int x, int y) { return x/y*y+f(x,y); } 4 Esercizio 3 (4 punti) Si considerino le seguenti dichiarazioni di tipi che definiscono le strutture dati per gestire una compagnia telefonica. typedef struct { int giorno, mese, anno; } data; typedef struct { data d; int voto; } esame ; Si definisca una funzione di prototipo int f( esame esami[100][34], int codice ); che r iceve una matrice di esami e un intero. Ogni riga della matrice rappresenta i voti di uno dei 100 studenti iscritti a un master e ogni colonna corrisponde a uno dei 34 esa mi del master. L’intero codice rappresenta il codice dello studente e corrisponde al numero di riga dove sono posizionati i suoi voti. La funzione deve restituire il voto più alto preso in un esame dato tra il 18/11/2015 e il 18/11/2016 dallo studente di cui ha ricevuto il codice. 5 6 Esercizio 4 (4 punti) Si scriva una funzione che riceve in ingresso un a rray di interi di lunghezza N (con N definito con #define N …) e modific a l’array stess o memorizzando nell’ultimo elemento la somma del penultimo ed ultimo elemento , nel penultim o la somma del terzultimo e del penultimo e così via. Il primo elemento è l’unico che non deve essere modificato. Ad esempio, un array contenente la sequenza di interi 4 6 2 3 9 verrà modific ato nell ’array 4 10 8 5 12 . 7