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

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 ( 12 punti ) __________ Esercizio 6 ( 4 punti ) __________ Totale: _________ 2 Esercizio 1 - Algebra di Boole, Aritmetica Binaria, Codifica delle Infor mazioni (2 punti) (a) Si costruisca la tabella di verità della seguente espressione booleana, badando all a precedenz a tra gli operatori logici. (1 punto). ( ( not A ) or ( ( not B ) and C ) ) or ( A and C ) (b) Si stabilisca il minimo numero di bit sufficiente a rappresentare in complemento a due i numeri A = 16dec e B = –78dec , 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ù sign ificativi e se si verifica overflow (1 punto). 3 Esercizio 2 ( 4 punti ) Si consideri il seguente schema di base di dati che vuole tenere traccia di alcune attività di una catena di supermercati. SUPERMERCATO ( CodiceSM , Nome, Indirizzo, Città, T el, Responsabile) PRODOTTO ( CodiceProdotto , Nome, Produttore, Prezzo) CLIENTE ( CF, NumTessera, Nome, Cognome, Indirizzo, Città, Tel) RIGASCONTRINO ( CodiceSM, Data, Ora, CodiceProdotto , NumTessera, Quantità) Scrivere in SQL l'interrogazione che trova i clienti che non hanno mai acquistato un “Kit Kat” 4 Si consideri il seguente schema di base di dati che vuole tenere traccia di alcune attività di una catena di supermercati. SUPERMERCATO ( CodiceSM , Nome, Indirizzo, Città, Tel, Responsabile) PRODOTTO ( Codi ceProdotto , Nome, Produttore, Prezzo) CLIENTE ( CF, NumTessera, Nome, Cognome, Indirizzo, Città, Tel) RIGASCONTRINO ( CodiceSM, Data, Ora, CodiceProdotto , NumTessera, Quantità) Scrivere in SQL l'interrogazione che trova la data e l’ora dello scontrino della spesa più costosa d el 2014. 5 Esercizio 3 ( 4 punti ) Si dica cosa stampa il seguente codice #include #include void f(char * str); int main() { char inutile; char m[11] = "ALESSANDRO"; f(m+5); scanf("%c",&inutile); retu rn 0; } void f(char * str) { if (str == NULL) return; printf("%c", *str); str=str+1; if(strlen(str) == 0) return; f(str -1); printf("%c", *str); return; } 6 7 Esercizio 4 ( 6 punti ) Il DNA è composto da quattro basi azotate: adenina (A), guanina (G), citosina (C) e timina (T). Il DNA è una doppia catena polinucleotidica (A,T,C,G) in cui ogni tipo di base presente su un filamento forma un legame con la base posta sul filamento opposto. Tale evento è noto come appaiamento comp lementare: A può legare solo T e G può legare solo C . Date quindi due catene di basi, esse possono essere le due catene dello stesso DNA se in corrispondenza di ogni base della prima nella seconda c’è la base complementare Esempi: AGGTCATTCG TCCAGTAAGC son o compatibili Mentre AGG TCATTCG TCC CGGAAGC non lo sono a cause delle non corrispondenze evidenziate in grassetto. Si codifichi in C una funzione int compatibili( char * S1, char * S2) che riceve le due catene di un DNA e restituisce 1 se sono compatibili, 0 altrimenti. 8 9 Esercizio 5 ( 7 punti ) Un a società gestisce una linea di autobus in una grande città. I dati degli autisti e degli autobus sono organizzat i in list e. Le strutture dati utilizzate sono le seguenti: typedef struct {int giorno, mese, an no;} Data typedef struct Driver { char codice [100] , nome [100] , patente [100] ; Data dataDiNascita ; struct Driver * next; } Autista; typedef Autista * Autisti; typedef struct Bus { char * tar ga ; int NumeroPosti; Data dataImmatricolazione; struct Bus * next; } Autobus; typedef Autobus * Veicoli; typedef struct Ride { char targaBus[100] char codiceAutista[100] ; char tipoCorsa; struct Ride * next; } Corsa; typedef Corsa * Corse ; Il campo tipoCorsa può assum ere i valori ‘U’ (“Urbano”), ‘S’ (“Servizio scuole”) e ‘E’ (“ Extraurbano”). Si codifichi in C l a funzion e: int AutistiEsperti(Corse C, Autisti A) che riceve in input la lista delle corse e la lista degli autisti e restituisce 1 se tutti gli autisti che si occupano di corse di tipo “Extraurbano” hanno meno di 60 anni (per semplicità, ci si limiti a controllare che s iano nati dopo il 1955), 0 altrimenti. 10 11 Si codifichi in C l a seguent e funzion e: Corse eliminaCorsa (Corse C ) che cancella dalla lista C tutte le corse che utilizzano autobus immatricolati prima del 2005. 12 13 Esercizio 6 ( 4 punti ) L’albero della cuccagna è un albero binario definito come segue (pieno di premi, descritti da una stringa): typedef struct nd { char premio[30]; struct nd *sx, *dx; } Nodo; typedef Nodo * Albero; Si g ioca per vincere un premio, che si trova in questo modo: il giocatore, ricevuta una stringa formata solo da ‘S’ e da ‘D’, parte dalla radice dell’albero, leggendo la stringa: ad ogni carattere 'S' corrisponde uno spostamento nel ramo di sinistra, ad ogni ' D' uno a destra, e vince il premio raggiunto utilizzando tutti i caratteri della stringa. Se nel corso della ricerca la stringa suggerisce uno spostamento verso un ramo inesistente, si "cade". Si codifichi in C una funzione void arrampica( Albero t, char * codice ) che stampa il premio vinto, oppure il messaggio "Non hai vinto" se il codice porta a una posizione non valida. 14 15 16