• Non ci sono risultati.

Esercizio 1 (4 punti) Cosa stampa la seguente funzione?

N/A
N/A
Protected

Academic year: 2021

Condividi "Esercizio 1 (4 punti) Cosa stampa la seguente funzione?"

Copied!
2
0
0

Testo completo

(1)

Università degli Studi di Udine

Corsi di laurea in Ing. Elettronica Gestionale Fondamenti di programmazione

18 novembre 2016 - Prova intermedia

Matricola ____________________________

Nome ____________________________

Cognome ____________________________

Aula ____ Fila (dalla cattedra) ____ Posto (dalla porta) ___

Esercizio 1 (4 punti)

Cosa stampa la seguente funzione?

void stampa (void) {

char s[16], t[16];

strcpy (s, "coleottero");

strcpy (t, "formica");

s[8] = t[8] = '\0';

printf ("%s--%s\n", s, t);

return;

}

Risposta: ___________________________

Esercizio 2 (6 punti)

Si scriva la funzione void

scorrimento_circolare (int v[], int dim) che riceve come argomenti un vettore di interi e la sua dimensione e fa scorrere in avanti tutti gli elementi del vettore di una posizione, spostando l’ultimo al posto del primo. Per esempio, se il vettore di ingresso ha 5 elementi e contiene i valori { 10, 13, 9, -4, 5 }, al termine dell’esecuzione della funzione dovrà contenere { 5, 10, 13, 9, -4 }.

Suggerimento: si copi in una variabile temporanea l’ultimo elemento del vettore, si copi poi ogni elemento del vettore nella posizione immediatamente seguente, si copi infine il valore salvato nella variabile temporanea nella prima posizione.

Esercizio 3 (2 punti)

Si completi il seguente frammento di codice che inizializza il primo e l’ultimo elemento di un vettore v di numeri reali di tipo double di lunghezza n al valore -1, e tutti gli altri elementi a un valore pari al proprio indice diviso per n. Quindi, per esempio, in un vettore di 20 elementi l’elemento di indice 15 sarà inizializzato a 0.75.

v[0] = v[n-1] = -1;

for (i = __________________________) v[i] = _________________________;

Esercizio 4 (3 punti)

La seguente funzione cerca un numero intero k, passato come argomento, in una matrice di interi int m[5][10], anch’essa passata come argomento. La funzione restituisce uno se il valore cercato è presente nella matrice e zero altrimenti. Se il valore è presente, nelle variabili passate by reference si troveranno i valori degli indici di riga e di colonna della cella dove l’elemento è stato trovato.

Si indichi quale, tra le seguenti, è la versione corretta della funzione.

int cerca_in_mat (int m[5][10],

int k, int *r, int *c) {

for (r = 0; r < 5; r++) for (c = 0; c < 10; c++) if (m[r][c] == k) return 1;

return 0;

}

int cerca_in_mat (int m[][],

int k, int *r, int *c) {

for (*r = 0; *r < 5; (*r)++) for (*c = 0; *c < 10; (*c)++) if (m[*r][*c] == k)

return 1;

return 0;

}

int cerca_in_mat (int m[5][10],

int k, int *pr, int *pc) {

for (*pr = 0; *pr < 5; (*pr)++) for (*pc = 0; *pc < 10; (*pc)++) if (m[*pr][*pc] == k)

return 1;

return 0;

}

int cerca_in_mat (int m[5][10],

int k, int *pr, int *pc) {

for (*pr = 0; *pr < 5; (*pr)++) for (*pc = 0; *pc < 10; (*pc)++) if (m[*pc][*pr] == k)

return 1;

return 0;

}

(2)

Esercizio 5 (3 punti)

Quanti byte occupano i seguenti dati?

char s[3]; _____________

"123"; _____________

"a" _____________

'\n' _____________

"testo\n" _____________

"" _____________

Esercizio 6 (6 punti)

Si completi la funzione int traduci_numero (char s[]) che riceve in ingresso una stringa rappresentante un numero intero le cui cifre sono scritte in forma testuale, separate da virgola e terminate da un punto, senza spazi, e restituisce il valore del numero rappresentato.

Per esempio, se la stringa s contiene

"sette,zero,nove.", la funzione restituisce il valore intero 709, se invece s contiene "sei,tre.", la funzione restituisce 63.

Suggerimento: l’algoritmo è identico a quello della lettura del numero da tastiera visto a lezione. In questo caso, però, il valore di ogni cifra va calcolato mediante una opportuna funzione di traduzione di una cifra dalla forma testuale al valore rappresentato (per esempio

"otto" deve restituire il valore 8).

int traduci_numero (char s[]) {

int i, j, risultato;

char temp[16];

i = 0; j = 0;

_____________________;

while (s[i] != '\0') {

if (s[i] != ',' && s[i] != '.') {

/* copia il carattere in temp */

_____________________

j++;

i++;

} else {

/* termina la stringa temp e aggiorna il risultato parziale */

_______________________;

risultato = _______________________;

j = 0;

i++;

} }

return risultato;

}

int traduci_cifra (char s[]) {

int i;

char cifre[10][8] = { "zero", "uno", "due", "tre", "quattro", "cinque",

"sei", "sette", "otto", "nove" };

for (_____________________________) if (________________________________) return i;

return -1; /* cifra non valida */

}

Esercizio 7 (2 punti)

Che risultato si ottiene al termine dell’esecuzione del seguente frammento di codice?

a = 4; b = 5;

c = a++ + --b;

[ ] c = 8 [ ] c = 9 [ ] c = 10

[ ] il risultato è indefinito

Esercizio 8 (4 punti)

Si calcoli il valore stampato dal seguente programma, che chiama la funzione f, ricorsiva. (Si considerino già presenti nel file sorgente le direttive al preprocessor per includere i necessari header file).

int main() {

printf ("%d", f (18, 24));

return EXIT_SUCCESS;

}

int f(int x, int y) {

if (y == 0) return x;

return f(y, x%y);

}

Risposta: ___________________________

Riferimenti

Documenti correlati

Ricerca esaustiva: si scandisce il vettore, confrontando gli elementi con quello da cercare, fino a che.. • si sono confrontati tutti gli

Due forze con uguale direzione e verso opposto hanno intensità di 12N e 7N.. Rappre- senta graficamente le due forze e la

A=uno dei metodi migliori per trovarlo è il comando ar.ols; B=il metodo SET è l’unico in grado di trovarlo; C=il metodo più sicuro per ottenere un’ottima previsione del trend futuro

Piu’ in generale, si definiscono un’operazione di addizione fra matrici dello stesso tipo, un’operazione di moltiplicazione di una matrice per uno scalare, e si prova che il prodotto

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

4c) Dimostrare che tutte le soluzioni non costanti dell’equazione non presentano punti di massimo o di minimo

Tutoraggio Analisi

Calcolare la funzione derivata prima di f e determinarne il dominio, classificando eventuali punti di non derivabilit` a.. Risposta