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

Second partial exam

Informatica A – a.a. 10 /11 – Secondo Appello Cognome ________________________________ Matricola _______________________ Nome ________________________________ _______ Istruzioni • Non separate questi fogli. Scrivete la soluzione sol o 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 matita (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 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: 2h3 0m Esercizio 1 ( 2 punti ) __________ Esercizi o 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à d ella seguente espressione booleana. ( A or ( (not C) and B ) ) and ( C and B) Si stabilisca il minimo numero di bit sufficiente a rappresentare in complemento a due i numeri A = 128 e B = -256 , 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 una libreria . AUTORE (NOME , ISBN LIBRO ) LIBRO (ISBN , TITOLO , EDITORE , ANNO DIPUBBLICAZIONE ) CLIENTE (CODICE FISCALE , NOME , CITTÀ , PROVINCIA , DATA NASCITA ) VENDITA (CODICE FISCA LE, ISBN LIBRO , DATA , IMPORTO ) Estrarre il titolo del libro più venduto a clienti residenti in provincia di “Milano”. Il seguente schema descrive la base di dati di una libreria. AUTORE (NOME , ISBN LIBRO ) LIBRO (ISBN , TITOLO , EDITORE , ANNO DIPUBBLICAZIONE ) CLIENTE (CODICE FISCALE , NOME , CITTÀ , PROVINCIA , DATA NASCITA ) VENDITA (CODICE FISCA LE, ISBN LIBRO , DATA , IMPORTO ) Estrarre l'elenco de i clienti che hanno comprato più di 30 libri nel 2010 . 5 Esercizio 3 ( 4 punti ) Si dice cosa stampa il seguente codice e si spieghi cosa calcola la funzione f #include #include #include #define L 5 int f(ch ar val[],char comp[]); int main(){ char val[L+1], comp[L+1]; strcpy(val,"11111"); f(val,comp); printf(" \n%s > %s \n", val, comp); strcpy(val,"00000"); f(val,comp); printf(" \n%s > %s \n", val, comp); strcpy(val,"10101"); f(val,comp); printf(" \n%s > %s \n", val, comp); strcpy(val,"01010"); f(val,comp); printf(" \n%s > %s \n", val, comp); system("PAUSE"); } int f(char val[],char comp[]){ int i=0; int notOK=0, first1 =0 ; do { for(i = 0; val[i] != ' \0' && !notOK; i++) if(val[i] != '0' && val[i] != '1') notOK = 1; } while(notOK); comp[i] = val[i]; for(i --; i >= 0; i --) if(first1) if(val[i] == '0') comp[i] = '1'; else comp[i] = '0'; else { comp[i] = val[i]; if(val[i] == '1') first1 = 1; } } Esercizio 4 ( 4 punti ) La matrice M[6][ 156 ] contiene le 156 estrazioni del 2010 dei 6 numeri del SuperEnalotto. Scrivere una funzione int f(int M[][ 156 ]) che riceve la matrice M e restituisce quanti numeri tra 1 e 90 non sono mai usciti nel 2010. 7 Esercizio 5 ( 12 punti ) Un a società gestisce una linea di autobus in una grande città. I dati de gli autisti e degli autobus so no organizzat i in list e. Le strutture dati utilizzate sono le seguenti: typedef struct Driver { char * codice, * nome , * patente ; int annoDiNascita; int ann iDiEsperienza ; struct Driver * next; } Autista ; typedef Autista * Autisti ; typedef struct Bus { char * targa ; int NumeroPosti; struct Bus * next ; } Autobus; typedef Autobus * Veicoli ; typedef struct Ride { char * targaBus, * codiceAutista ; char tipoCorsa; struct Ride * next; } Corsa; typedef Corsa * Corse ; Il campo tipoCorsa può assum ere i valori ‘U’ (“Urbano”), ‘S’ (“Servizio scuole”), ‘E’ (“Extraurbano”), Si codifichi in C l a seguent e funzion e: int AutistiEsperti (Corse C, Autisti A ) che riceve in input la lista de lle corse e la lista degli autisti e restituisce 1 se tutti gli autisti che si occupano di corse di tipo “Servizio scuola” hanno almeno 10 anni di esperienza, 0 altrimenti . 9 Si codifichi in C l a seguent e funzion e: int elimina Corsa (Corse C , char * targa ) che elimina tutte le corse che utilizzano l’autobus con la targa passata come parametro . 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 treeN ode * tree; Definiamo un albero “oxfordiano” se per ogni percorso possibile dalla radice alle foglie la somma degli elementi incontrati nel percorso è divisibile per tre . Si codifichi in C l a seguent e funzion e: int oxfordiano (tree t) che restituisce 1 se t è “oxfordiano” , 0 altrimenti. 13