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. not ( (not A) or ( B and C ) ) or ( A and (C or B) ) 0 0 0 → 0 0 0 1 → 0 0 1 0 → 0 0 1 1 → 0 1 0 0 → 1 1 0 1 → 1 1 1 0 → 1 1 1 1 → 1 Si stabilisca il minimo numero di bit sufficiente a rappresentare in complemento a due i numeri A = 77 dec e B = –123 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 . Servono 8 bit 77=01001101 123=01111011 -123=10000101 A+B=11010010 (no riporto, no overflow) A-B=11001000 (no riporto, sì ov erflow) 3 Esercizio 2 (4 punti) Si dica cosa stampa il seguente codice: #include #define N 8 void t(int n, int p, int*i, int*f) { if( i>=f ) printf(" NON TROVATO \n"); else if( n == *i ) printf(" : dispari[%d] \n",p); else t( n, p+1, i+1, f ); } void d( int n, int *v ) { if( n%2 ) t( n, 0, v, v+N ); else { printf(" -> %d", n/2); d(n/2, v); } } int main(){ int dispari[4*N]={1,3,5,7,9,11,13,15,17,19, 21,23,25,27,29,31,33,35,37,39,41,43,45,47}, x[N]={7,18,24,17,88}, i=0; while( x[i] > 0 ) { printf("[%d]", x[i]); d( x[i++], dispari ); } return 0; } [7] : dispari[3] [18] -> 9 : dispari[4] [24] -> 12 -> 6 -> 3 : dispari[1] [17] NON TROVATO [88] -> 44 -> 22 -> 11 : dispari[5] 4 Esercizio 3 (4 punti) Si considerino le seguenti dichiarazioni di tipi che definiscono le strutture dati per gestire le visite di un dentista . typedef struct { int giorno, mese, anno; } data; typedef struct { int ora, minuto; } orario; typedef struct { char codiceFiscale[100], cognome[100], nome[100]; data DataNascita; } persona; typedef struct { persona pazienti[1000]; int numPazienti; //dice quante caselle dell’array contengono dati validi } listaPazienti; typedef struct { char CFPaziente[100] ; data d; orario o; } visita typedef struct { visita visite[1000]; int numVisite; //dice quante caselle dell’array co ntengono dati validi } listaVisite; Si definisca una funzione di prototipo listaPazienti f(listaPazienti P, listaVisite V ); che restituisce la lista dei pazienti che hanno avuto una visita medica il giorno del loro compleanno. listaPazienti f(listaPazienti P, listaVisite V) { int i,j; listaPazienti Pcomp; Pcomp.numPazienti=0; for(i=0;i