Listino Prezzi - Otoprotettori

Download Report

Transcript Listino Prezzi - Otoprotettori

Politecnico di Milano
Facoltà di Ingegneria Industriale
COGNOME E NOME
INFORMATICA B
Prova in itinere del 26 Novembre 2014
Tema d’esame A
MATRICOLA
Spazio riservato ai docenti
•
•
•
Il presente plico contiene 3 esercizi.
Il tempo a disposizione è di 75 minuti.
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 parte integrante della soluzione.
•
È possibile scrivere a matita (e non occorre ricalcare al momento della consegna) assicurandosi
comunque che quanto scritto sia ben leggibile.
•
È vietato utilizzare calcolatrici, telefoni o pc. 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.
Esercizio 1 (5 punti)
Si consideri la seguente espressione booleana:
!(A OR !C) AND ((!B OR C) OR B)
1. Si compili la seguente tabella della verità (in cui 0 rappresenta il valore logico FALSO, 1 il
valore VERO):
A
B
C
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
!C
A OR !C
!(A OR !C)
!B
!B OR C
(!B OR C) OR B
!(A OR !C) AND ( (!B OR C) OR B)
2. Si consideri ora la condizione, scritta in linguaggio C, in cui h e k siano due variabili int:
! ( (h > 0) || ! (h < 2) ) && ( ( ! (k < -3) || (h < 2) ) || (k < -3) )
ottenuta dalla prima formula sostituendo la variabile A con h > 0, la variabile B con k < -3, la
variabile C con h < 2
Si risponda giustificando bene le rispsote, alle seguenti domande:
a. L’espressione e’ vera o falsa quando k = 1 e h = 11?
b. Se k < -4, per quali valori di h l’espressione e’ falsa?
Esercizio 2 (6 punti)
Siano date in linguaggio C le seguenti strutture dati, che rappresentano un database di utenti e
relative foto, simile a quello di Facebook:
#define MAX_PHOTOS 10 #define MAX_ USERS 10
typedef struct { char link[40];
} photo_t;
typedef struct { char user_name[10]; int num_photos; /* numero di foto dell'utente */ photo_t photos[MAX_PHOTOS]; /* foto fatte dall'utente */ } user_t;
user_t database[MAX_USERS]; /* database generale degli utenti */
int num_users; /* Numero di utenti in `database`*/
1. Si riscriva la definizione del tipo photo_t estendendola in modo tale che includa anche le
informazioni relative al numero di gradimenti (anche detti like) che ciascuna foto ha
ricevuto, il titolo e la data (giorno, mese, anno) di pubblicazione della foto.
2. Si supponga che database e num_users siano stati inizializzati. Definendo le aggiuntive
variabili necessarie, scrivere una porzione di codice in linguaggio C che per ciascun utente
stampi a video il titolo della sua foto che ha ricevuto il massimo numero di like, riportando il
nome dell’utente, il titolo della foto e il numero di like che questa ha ricevuto.
Esercizio 3 (6 punti)
Un segnale audio può essere visto come una sequenza finita di numeri razionali; immaginate di
avere un segnale sig di lunghezza LEN pari a 1024 con valori razionali compresi tra 0 e 10 (inclusi):
sig = 0.42, 0.91, 5.24, 3.07, 1.11, ..., 9.50, 1.50
Si vuole realizzare un filtro a media mobile per analizzare il segnale: ogni valore del segnale viene
sostituito con la media aritmetica degli N valori precedenti (quindi il valore stesso non deve essere
considerato), lasciando immutati i primi N valori del segnale.
Ad esempio, considerando il segnale sig sopra indicato e N = 3:
0.42 --> 0.42
0.91 --> 0.91
5.24 --> 5.24
3.07 --> (0.42 + 0.91 + 5.24) / 3 = 2.19
1.11 --> (0.91 + 5.24 + 2.19) / 3 = 2.78
...
Scrivere un programma che:
1. definisca le variabili necessarie per contenere il segnale sig descritto;
2. richieda all'utente di inserire da tastiera tutti i valori del segnale e controlli che l'utente
inserisca solo valori valori ammessi (ovvero razionali tra 0 e 10);
3. filtri il segnale con una finestra di lunghezza N pari a 3 come visto nell'esempio;
4. stampi a video il segnale filtrato, formattando l'output con tre sole cifre decimali.