Università degli Studi di Udine
Corsi di laurea in Ing. Elettronica / Gestionale Fondamenti di programmazione / Inform. 1 14 novembre 2014 - Prova intermedia
Matricola ____________________________
Nome ____________________________
Cognome ____________________________
Aula ____ Fila (dalla cattedra) ____ Posto (dalla porta) _____
Esercizio 1 (4 punti)
In una matrice di interi di dimensioni 10x10 si possono individuare 81 quadrati composti da 2x2 celle, 64 da 3x3 celle, 49 da 4x4 celle e così via. Ogni quadrato può essere rappresentato dalle coordinate della cella in alto a sinistra (la più vicina a quella con coordinate 0, 0) e dalla lunghezza del lato.
La seguente funzione riceve come argomenti una matrice di interi 10x10 e un intero che rappresenta la lunghezza del lato dei quadrati da considerare. La funzione calcola la media dei valori contenuti in ogni quadrato e restituisce la minima media ottenuta. La si completi.
double minimo_medie(int m[10][10], int dim_quadrato) {
int i, j;
double minimo, media;
minimo = media_quadrato (________________________);
for (i = 0; i < 10 - ___________________; i++) for (j = 0; j < 10 - ______________________; j++)
if ((media = media_quadrato (m, i, j, dim_quadrato)) < ____________) _____________________________________;
return minimo;
}
double media_quadrato (int m[10][10], int i_inizio, int j_inizio, int dim_quadrato) {
int i, j, somma;
somma = 0;
for (i = i_inizio; i < _______________________; i++) for (j = j_inizio; j < ________________________; j++) somma ________ m[i][j];
return somma ____________________________________;
}
Esercizio 2 (2 punti)
La funzione leggi_matrice deve riempire una matrice di dimensione massima 100x100 leggendo dei numeri da tastiera e restituire il numero di righe e il numero di colonne effettivamente riempite. Si indichi la corretta combinazione di prototipo e di chiamata della funzione (si assuma che nella funzione chiamante siano definite due variabili intere righe e colonne):
prototipo: int, int leggi_matrice (int m[100][100]);
chiamata: righe, colonne = leggi_matrice (m);
prototipo: void leggi_matrice (int m[100][100], int *pnr, int *pnc);
chiamata: leggi_matrice (m, &righe, &colonne);
prototipo: int leggi_matrice (int m[100][100], int righe, int colonne);
chiamata: leggi_matrice (m, righe, colonne);
Esercizio 3 (4 punti)
Cosa stampa la funzione riportata a lato, se chiamata con argomento n = 6?
void f (int n) {
if (n < 10) f (n+1);
printf ("%d: ", n);
return;
}
Esercizio 4 (2 punti)
Dovete azzerare gli elementi di un vettore di interi che contengono un certo valore. Il vostro programma quindi chiama iterativamente una funzione di ricerca finché il dato non è più presente nel vettore.
Quale di queste funzioni di ricerca fa al caso vostro?
cerca1
cerca2
cerca3
cerca4
cerca5
int cerca1
(int v[], int dim, int dato_cercato) {
int i = 0 ; while (i < dim) {
if (v[i] == dato_cercato) return i;
else
return -1;
i++;
} }
int cerca2
(int v[], int dim, int dato_cercato) {
int i = 0 ; while (i < dim) {
if (v[i] == dato_cercato) return i;
else
return v[i];
i++;
} }
int cerca3
(int v[], int dim, int dato_cercato) {
int i = 0 ; while (i < dim) {
if (v[i] == dato_cercato) return v[i];
i++;
}
return -1;
}
int cerca4
(int v[], int dim, int dato_cercato) {
int i = 0 ; while (i < dim) {
if (v[i] == dato_cercato) return i;
i++;
}
return -1;
}
int cerca5
(int v[], int dim, int dato_cercato) {
int i = 0 ; while (i < dim) {
if (v[i] == dato_cercato) return v[i];
else
return -1;
i++;
} }
Esercizio 5 (4 punti)
Si deve definire un tipo struct per descrivere un esperimento balistico. Le informazioni da memorizzare sono:
- data dell’esperimento
- alzo del cannone (angolo verticale dall’orizzonte) - peso del proiettile (in grammi)
- nome della località dove si è svolto l’esperimento (massimo 30 caratteri) Si definiscano le strutture dati necessarie.
(segue sul retro)
Esercizio 6 (3 punti)
Con riferimento all’esercizio precedente, si completi il seguente frammento di codice, che assegna a una variabile di tipo struct esperimento le seguenti informazioni: data 14 novembre 2014, alzo 10o, 3', 25.5", peso 215.33 g, luogo Udine.
struct esperimento exp;
exp.peso = 215.33;
(completare nel riquadro a lato)
Esercizio 7 (3 punti)
Cosa stampa la seguente funzione?
void f (void) {
char s[16];
strcpy (s, "testdiesecuzione");
s[4] = s[6] = '\0';
printf ("%s", s);
return;
}
(indicare con una X la risposta ritenuta corretta) test di esecuzione
testdiesecuzione
testdi
test
esecuzione
Esercizio 8 (3 punti)
Prendendo come riferimento un elaboratore a 32 bit, scrivere le dimensioni in byte delle seguenti variabili e costanti:
int v[4] ____________________
0 ____________________
'\0' ____________________
"0" ____________________
float a; ____________________
double b; ____________________
Esercizio 9 (5 punti)
Si scriva la funzione filtra_stringa_solo_cifre che riceve come argomenti due stringhe s e t e copia in t le sole cifre decimali presenti in s.
Esempio:
s = "codice n.1: s2234bis" → t = "12234"