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 Cognome ________________________________ Matricola _______________________ Nome ________________________________ _______ Istruzioni • Non separate questi fogli. Scrivete la soluzione solo sui fogli distribuiti , utili zzando 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 mo mento 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 alt ri 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 ) __________ Esercizio 2 ( 4 punti ) __________ Esercizi o 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à della seguente espressione bool eana. ( (not A) or (C and ( not C ) ) ) or ( ( ( not A ) or A ) and (not B) ) Si stabilisca il minimo numero di bit sufficiente a rappresentare in complemento a due i numeri A = -222 e B = -16, li si converta, se ne calcoli la dif ferenza (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 usata per gestire delle gare automobili stiche su un unico circuito . CONCORRENTE (Codice , Nome, Cognome) GRADUATORIA (CodiceConcorrente , MediaTempi) GARA (Codice , Nome, NumConcorrenti) ESITO GARA (CodiceGara, CodiceConcorrente , Tempo, Posizione) La tabella Graduatoria contiene le medie delle gare per ogni concorrente Estrarre i l nome e il cognome del concorrente con la migliore media dei tempi (2 punti) . Il seguente schema descrive la base di dati usata per gestire delle gare automobilistiche su un unico circuito. CONCORRE NTE (Codice , Nome, Cognome) GRADUATORIA (CodiceConcorrente , MediaTempi) GARA (Codice , Nome, NumConcorrenti) ESITO GARA (CodiceGara, CodiceConcorrente , Tempo, Posizione) La tabella Graduatoria contiene le medie delle gare per ogni concorre nte Estrarre il nome e il cognome dei concorrenti che non sono mai arrivati primi in una gara (2 punti). 5 Esercizio 3 ( 4 punti ) SimpleScrabble è una versione del gioco Scrabble dove il valore delle parole dipende solo dalle lettere che le compongono . Ogni lettera ha un valore (da 1 a 10) ed è disponibile in un certo numero di esemplari (da 1 a 12). Il valore di una parola è la somma dei valori delle sue lettere. Gli array valore e numero , definiti nell'ambiente globale come segue, indicano il valore e il numero di esemplari disponibili di ognuna delle 26 lettere, in ordine alfabetico. Consideriamo per semplicità solo le lettere maiuscole. int numero[26] = {9,2,2,4,12,2,3,2,9,1,1,4,2,6,8,2, 1,6,4,6,4,2,2,1,2, 1}; int valore[26] = {1,2,3,2, 1,4,2,4,1,8, 5,1,3,1,1,3,10,1,1,1,1,4,4,8,4,10}; Ci sono quindi 9 A da 1 punto, 2 B da 2 pt, 2 C da 3 pt, 4 D da 2 pt, 12 E da 1 pt, …, 1 Z da 10 pt. Una funzione punteggio(…) calcola e restituisce il valore della parola ricevuta come parametro, assegnando 0 alle parol e non valide . Una parola è valida se è di almeno 2 lettere ed è ottenibile con le lettere a disposizione ( CAB vale 3+1+2=6 pt, KARAOKE non è valida, perché disponiamo di una sola K). Si analizzino le funzioni punteggio( ...)e valida( ...) date sotto e si cor reggano gli errori contenuti nelle funzioni (gli errori totali sono quattro, due per ognuna delle due funzioni) int punteggio ( char parola[] ) { int p = 0, l; l = strlen(parola); if ( l >= 2 && valida(parola) ) for ( ; l >= 0 ; l++ ) p += valore[parola[l] -'A']; return p; } int valida ( char parola[] ) { int i, p, k=0; for ( i=0 ; i