Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
X Y
- -
- 6 G(&y, &y)
Y X
- 6 &y &y
- 12 &y &y
- 13 &y &y
26
- 26
- 26 G(&x, &x)
- 26 Y X
- 26 &x &x
- 26 &x &x
1 26 &x &x
2
3 26
Autore: Cassandra Pagina 13
Quesito 4 (punteggio 4)
Dati i seguenti schemi di relazione con le rispettive istanze:
Aziende(PIVA,Denominazione)
PIVA Denominazione
111 Pirelli
222 Zucchetti
Consulenti(PIVA,CF, dataAss, Ret)
PIVA CF dataAss Ret
111 AAAAAA 22-11-2009 1000
222 AAAAAA 22-11-2009 2000
222 BBBBBB 28-10-2009 5000
111 CCCCCC 30-12-2007 1000
222 CCCCCC 30-12-2007 2000
stabilire il risultato della seguente query scrivendo le tabelle intermedie:
SELECT COUNT(*)
FROM (SELECT MAX(Ret) AS M FROM Consulenti GROUP BY PIVA) A,
(SELECT MIN(Ret) AS M FROM Consulenti GROUP BY CF) B
WHERE A.M > B.M
TABELLA A
M
1000
5000
Autore: Cassandra Pagina 14
TABELLA B
M
1000
5000
1000
TABELLA A X B
A.M B.M
1000 1000
1000 5000
1000 1000
5000 1000
5000 5000
5000 1000
TABELLA FINALE
COUNT(*)
2
Autore: Cassandra Pagina 15
Esercizio 1 (9 punti)
Descrivere un algoritmo codificato in linguaggio C/C++ che:
verifica
3. definisce la funzione con parametri:
int;
a di tipo vettore di 100
int;
b di tipo
La funzione deve restituire con un’istruzione return la posizione i di un qualsiasi elemento del
vettore a tale a[i-1] + a[i+1] = b e a[i+1] > a[i-1]; in caso contrario la funzione deve restituire con
un’istruzione return il valore -1.
main
4. nella funzione x
V. dichiarare un vettore di nome contenente 100 numeri interi;
y
VI. dichiarare un vettore di nome contenente 100 numeri interi;
x;
VII. inserire 100 valori letti da standard input nel vettore
VIII. ripetere le seguenti operazioni fino a quando viene scritto un valore maggiore di 5 in ogni
posizione del vettore y:
a. inserire in una variabile di nome t un valore letto da standard input;
verifica x
b. eseguire la funzione applicata al vettore e al numero letto da
standard input inserendo il risultato nel vettore y.
int verifica (int a[100], int b){
int i=0;
int vero=0;
do{ if(a[i-1] + a[i+1] == b && a[i+1] > a[i-1]){
vero=1;
}
i++;
} while (i<100 && vero == 0);
if( vero == 1){
return i--;
}
Autore: Cassandra Pagina 16
else { return -1;
}
}
int main() {
int x[100];
int y[100];
int i;
int t;
int ris;
for (i=0; i<100; i++){
scanf("%d", &x[i]);
}
i=0;
do{ scanf("%d", &t);
ris=verifica(x, t);
if(ris>5){
y[i]=ris;
i++;
}
}while(i<100);
system ("PAUSE");
return 0;
Autore: Cassandra Pagina 17
}
Esercizio 2 (4 punti)
Descrivere un algoritmo codificato in linguaggio C/C++ che:
x
1. definisce un vettore contenente 100 numeri interi; x;
2. legge da standard input 100 numeri interi e li inserisce nel vettore
x
3. visualizza su standard output le posizioni di ove compaiono numeri pari e modivica tali valori
moltiplicandoli per 10.
int main() {
int x[100];
int i;
for(i=0; i<100; i++){
scanf("%d", &x[i]);
}
for(i=0;i<100;i++){
if(x[i]%2 == 0){
printf("%d", &x[i]);
x[i]=x[i]*10;
}
}
system ("PAUSE");
return 0;
}
Autore: Cassandra Pagina 18
Esercizio 3 (7 punti)
Il sistema informatico di una nota azienda elettrica utilizza un database per gestire le fatture emesse. Nel
database sono presenti le seguenti relazioni:
Fornitori (ID, PIVA, Indirizzo)
Vendite(IDProdotto, DataA, DataV, Importo)
Fornitori ID PIVA Vendite
dove nella relazione gli attributi e formano una chiave. Nella relazione
IDProdotto DataA IDProdotto
gli attributi e formano una chiave e l'attributo è chiave esterna per la
Fornitori. Vendite
relazione Ogni tupla della relazione elenca i prodotti venduti; in ogni tupla
DataA DataV
l'attributo rappresenta la data di acquisto del prodotto, l'attributo rappresenta la data di
Importo
vendita del prodotto e l'attributo rappresenta il prezzo di vendita.
1. scrivere l'istruzione SQL che visualizza la partita iva (PIVA) dei fornitori i cui tutti prodotti sono
stati tutti venditi entro 7 giorni dalla data di acquisto (utilizzare la funzione
TIMESTAMPDIFF(DAY,DataA ,DataV) per eseguire la differenza tra due date);
2. scrivere l'istruzione SQL che visualizza il valore medio dell’importo delle vendite emesse nel 2016;
3. scrivere l'istruzione SQL che visualizza le partite iva (PIVA) di chi fornisce più di un prodotto
venduto;
4. scrivere l'istruzione SQL che traduce la seguente espressione dell’algebra relazionale: prodotto
Fornitori
cartesiano fra la tabella e quella che si ottiene attraverso un'operazione di
SUM(Importo) Vendite.
proiezione dell'operatore dalla relazione
Query 1
SELECT PIVA
FROM Fornitori AS F1, Vendite AS V1
WHERE ID = IDProdotto AND TIMESTAMPDIFF(DAY,DataA ,DataV) < 7
GROUP BY PIVA
HAVING COUNT(*) = (SELECT COUNT(*)
FROM Fornitori AS F2, Vendite AS V2
WHERE ID = IDProdotto AND TIMESTAMPDIFF(DAY,DataA ,DataV) < 7 AND F2.PIVA = F1.PIVA
GROUP BY PIVA) A
Autore: Cassandra Pagina 19
Query 2
SELECT AVG(Importo)
FROM Vendite
WHERE DataV BETWEEN 01-01-2016 AND 31-12-2016
Query 3
SELECT PIVA
FROM Fornitori, Vendite
WHERE ID = IDProdotto
GROUP BY PIVA
HAVING COUNT(*)>1
Query 4
SELECT *
FROM Fornitori, (SELECT SUM (Importo)
FROM Vendite) X
Autore: Cassandra Pagina 20
Esame Informatica Generale 05/02/2018 – Fila A
Quesito 1 (punteggio 2)
Si considerino le seguenti dichiarazioni di variabili e prototipo di funzione:
int x[10];
double y;
void esame(int[], int, double*); /* versione puntatori */
void esame(int[], int, double&); /* versione riferimenti */
indicare gli errori presenti nella seguente espressione.
esame(x[9], x[y] + 1, y + 1.5);
Come primo parametro la funzione richiede un intero vettore, ma viene
passato un solo valore. Dovrebbe essere semplicemente x invece di x[9]
Nel secondo parametro viene passato x[y], ma l’indice deve essere intero
non un valore double
Come ultimo parametro viene richiesto un puntatore, mentre viene passata
una variabile normale. Dovrebbe essere &y, invece che solo y.
Quesito 2 (punteggio 2)
Descrivere la funzione del gestore dei file di un sistema operativo.
Quesito 3 (punteggio 2)
Scegliere uno dei seguenti algoritmi codificati in linguaggio C/C++ e scrivere la tabella di esecuzione (trace
table): Puntatori Riferimenti
int F(int* x) { int F(int& x) {
x = 2 + x;
*x = 2 + *x; return x;
}
return *x; int G(int& y, int x) {
} x = 1 + F(y);
y = y + 1;
return y + x;
int G(int* y, int x) { }
Autore: Cassandra Pagina 21
x = 1 + F(y); int main() {
int x, y;
*y = *y + 1; x = 2;
y = G(x, F(x));
return *y + x; return 0;
} }
int main() {
int x, y;
x = 2;
y = G(&x, F(&x));
return 0;
}
Main
X Y
- -
2 - F(&x)
2 - X
2 - &x
4 - &x 4
G(&x, 4)
4 - Y X
4 - &x 4
4 - &x 4 F(&x)
Autore: Cassandra Pagina 22
4 - &x 4 X
4 - &x 4 &x
6 - &x 4 &x 6
6 - &x 7
7 - &x 7
14
7 14
Quesito 4 (punteggio 4)
Dati i seguenti schemi di relazione con le rispettive istanze:
Aziende(PIVA,Denominazione)
PIVA Denominazione
111 Pirelli
222 Zucchetti
Consulenti(PIVA,CF, dataAss, Ret)
PIVA CF dataAss Ret
111 AAAAAA 22-11-2009 1000
222 AAAAAA 22-11-2009 2000
222 BBBBBB 28-10-2009 5000
111 CCCCCC 30-12-2007 1000
222 CCCCCC 30-12-2007 2000
stabilire il risultato della seguente query scrivendo le tabelle intermedie:
SELECT A.M, B.M, COUNT(*) AS C
FROM (SELECT COUNT(*) AS M FROM Consulenti) A,
Autore: Cassandra Pagina 23
(SELECT AVG(Ret) AS M FROM Consulenti GROUP BY CF) B
GROUP BY A.M, B.M
TABELLA A
M
4
TABELLA B
M
1500
5000
1500
TABELLA A X B
A.M B.M
4 1500
4 5000
4 1500
TABELLA FINALE
A.M B.M C
4 1500 2
4 5000 1
Autore: Cassandra Pagina 24
Esercizio 1 (9 punti)
Descrivere un algoritmo codificato in linguaggio C/C++ che:
sostituisci
5. definisce la funzione con parametri:
int;
a di tipo vettore di 100
int;
b di tipo vettore di 30
int;
c di tipo puntatore/riferimento ad un
Si suppone che il vettore b contenga solo numeri negativi. La funzione deve sostituire al più 30
valori positivi o nulli contenuti nel vettore a con i valori presenti nel vettore b. Attenzione ogni
valore del vettore b può essere utilizzato solamente per una sostituzione.
Inoltre, la funzione deve scrivere nell’area di memoria puntata/riferita da c il numero di sostituzioni
effettuate e restituire con un’istruzione return il numero 1 se sono stati sostituiti tutti i numeri
positivi o nulli del vettore a, 0 in caso contrario.
main
6. nella funzione x int y int;
IX. dichiarare un vettore di nome di 100 e un vettore di nome di 30
t int n int;
X. dichiarare una variabile di nome di tipo e una variabile di nome di tipo
y.
XI. inserire 30 valori letti da standard input nel vettore Durante l’esecuzione inserire solo
numeri negativi;
XII. ripetere le seguenti operazioni fino a quando, dopo l’esecuzione della funzione
sostituisci, in ogni posizione del vettore x è presente un numero negativo:
x;
a. inserire 100 valori letti da standard input nel vettore
sostituisci x
b. eseguire la funzione applicata al vettore e al vettore nel
vettore y, utilizzando le variabili t e n per i risultati.
int sostituisci (int a[100], int b[30], int *c){
int i,j=0;
for (i=0; i<100; i++){
if(a[i]>=0 && j<30){
a[i]=b[j];
j++;
}
}
*c=j;
Autore: Cassandra Pagina 25
if(i==100){
return 1;
}
else{ return 0;
}
}
int main() {
int x[100];
int i;
int y[30];
int n;
i=0;
do{ scanf("%d", &n);
if(n<0){ y[i]=n;
i++;
}
}while(i<30);
do{ for(i=0;i<100;i++){
scanf("%d", &x[i]);
}
Autore: Cassandra Pagina 26
n=sostituisci(x, y, &t);
}while(t!=0);
system ("PAUSE");
return 0;
}
Esercizio 2 (4 punti)
Descrivere un algoritmo codificato in linguag