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 ( 6 punti ) __________ Esercizio 5 ( 12 punti ) __________ Esercizio 6 ( 4 punti ) __________ Voto finale: __________ Esercizio 1 ( 2 punti ) Si costruisca la tabella di verità della seguente espressione booleana. ( A or (C and ( not C ) ) ) or ( ( ( not A ) or A ) and (not C) ) 1 1 1 0 Si stabilisca il minimo numero di bit sufficiente a rappresentare in complemento a due i numeri A = -212 e B = -26, li si converta, se ne calcoli la differenza (A-B) in complemento a du e e si indichi se si genera riporto sulla colonna dei bit più significativi e se si verifica overflow . Non da overflow 3 Esercizio 2 ( 4 punti ) Il seguente schema descrive la base di dati usata per gestire delle gare automobilistiche 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 ga re per ogni concorrente Estrarre , per ogni gara, il nome e il cognome del concorrente con il miglior temp o (2 punti) . SELECT Nome, Cognome, CodiceGara FROM EsitoGara JOIN Concorrente ON Codice = CodiceConcorrente WHERE Posizione = 1 Il seguente s chema descrive la base di dati usata per gestire delle gare automobilistiche su un unico circuito. CONCORRENTE (Codice , Nome, Cognome) GRADUATORIA (CodiceConcorrente , MediaTempi) GARA (Codice , Nome, NumConcorrenti) ESITO GARA (CodiceGara, Codic eConcorrente , Tempo, Posizione) La tabella Graduatoria contiene le medie delle gare per ogni concorrente Estrarre il nome e il cognome dei concorrenti che non sono mai arrivati ultimi in una gara (2 punti). CREATE VIEW EsitoGara&Gara SEL ECT CodiceGara, CodiceConcorrente, Poszione, NumConcorrenti FROM EsitoGara JOIN Gara ON CodiceGara = Codice SELECT Nome, Cognome FROM EsitoGara&Gara JOIN Concorrente ON Codice = CodiceConcorrente GROUP BY CodiceGara HAVING Posizione > NumConcorrenti 5 Eserc izio 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 d i 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 parole non valide . Una parola è valida se è di almeno 2 lettere ed è ottenibile con le lettere a disposizione ( CAB val e 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 trovino 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