• Non ci sono risultati.

Esercizio 1 (4 punti)

N/A
N/A
Protected

Academic year: 2021

Condividi "Esercizio 1 (4 punti)"

Copied!
2
0
0

Testo completo

(1)

Università degli Studi di Udine

Corsi di laurea in Ing. Elettronica Gestionale Fondamenti di programmazione

17 novembre 2017 - Prova intermedia

Matricola ____________________________

Nome ____________________________

Cognome ____________________________

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

Esercizio 1 (4 punti)

Un vettore di numeri reali contiene i tassi di interesse (percentuali) di un periodo di dieci anni, uno per anno.

Il calcolo dell’interesse composto, detto anche montante, di una somma richiede che per ogni anno venga calcolato l’importo disponibile all’inizio dell’anno, comprensivo degli interessi accumulati negli anni precedenti, e a tale importo venga applicato il tasso di interesse dell’anno considerato. Il valore risultante sarà l’importo di partenza per l’anno successivo.

Per esempio, se il vettore contiene i valori { 2.5, 2.3, 1.2, 0.9, 1.7, 2.2, 2.0, 1.8, 1.6, 1.1 }, l’importo iniziale (depositato all’inizio del primo anno) è pari a 100.00 euro e il numero di anni da considerare è 3, l’importo finale sarà 106.1158, ottenuto da {[100 * (1+2.5/100)]

* (1+2.3/100)} * (1+1.2/100).

La funzione

double montante

(double deposito_iniziale, double tassi[], int anni)

riportata nel seguito, che dovrebbe calcolare l’importo finale applicando l’interesse composto al deposito iniziale per il numero di anni e per i tassi di interesse passati come argomenti, contiene diversi errori. Li si evidenzino e li si correggano.

double montante

(double deposito_iniziale;

double tassi[]; int anni) {

double capitale;

int i;

capitale = deposito_iniziale;

for (i = 1; i < anni; i++) deposito_iniziale = capitale *

(1 + tassi[i-1] / 100);

return montante;

}

________________________________________________________________________________________________

Esercizio 2 (4 punti)

Si consideri una stringa s contenente "2417". Indicare quale/i tra i seguenti frammenti di codice scrive nella variabile x il valore rappresentato dalla stringa s.

[ ] x = atoi(s);

[ ] atoi(s) = x;

[ ] x = (int)s;

[ ] x=0; i=0; while(*(s+i)!='\0') x=x*10+*(s+i++)-'0';

[ ] sscanf(s, "%d", &x);

[ ] sscanf(x, "%d", &s);

________________________________________________________________________________________________

Esercizio 3 (2 punti)

Alle variabili q ed r devono essere assegnati, rispettivamente, quoziente e resto della divisione intera tra le variabili intere a e b. Indicare quale delle seguenti è la coppia di istruzioni corrette.

[ ] q=a%(--b); r=a/(++b);

[ ] q=a%(++b); r=a/(--b);

[ ] q=a/b; r=b/a;

[ ] q=a%b; r=b%a;

[ ] q=a%b; r=a/b;

[ ] q=a/b; r=a%b;

Esercizio 4 (4 punti)

Si completi la funzione void scambia_vettori (float v1[], float v2[], int dim) che scambia il contenuto dei due vettori passati come argomento, entrambi della medesima dimensione dim.

void scambia_vettori

(float v1[], float v2[], int dim) {

int i;

for (i = 0; i < ________; i++)

swap_float (___________________);

return;

}

void swap_float (____________________) {

float t;

t = _______;

*p_a = ________;

*p_b = ________;

return;

}

(2)

Esercizio 5 (2 punti)

Considerando un’architettura da 32 bit, quanti byte occupano i seguenti dati?

'1' _____________

1 _____________

"1\n" _____________

"1" _____________

"\n" _____________

Esercizio 6 (2 punti)

Cosa stampa il seguente frammento di codice?

char s[12];

strcpy (s, "alfabeto");

s[strlen(s)-3] = '\0';

printf ("%s", s);

[ ] alfabeto seguito da un carattere casuale [ ] alfabet

[ ] alfabe [ ] alfab

Esercizio 7 (4 punti)

La seguente funzione cerca in una matrice di interi positivi int a[5][10] una coppia di celle adiacenti, in orizzontale, contenenti il medesimo valore. Si assuma che nella matrice possa esserci al massimo una coppia di elementi che soddisfi tale condizione. La funzione deve restituire il valore contenuto in tali celle o -1, se tale coppia non esiste.

Si completi la funzione.

int cerca_coppia (int a__________) {

int i, j;

for (i = 0; i < 5; i++) for (j = 1; j < 10; j++)

if (________________________) return _______;

return ______;

}

______________________________________________________________________________________________

Esercizio 8 (8 punti)

Una stringa contiene un testo in cui alcune lettere dell’alfabeto sono state sostituite da cifre numeriche. Per esempio:

"8AL3N4 R05SA"

Si scriva una funzione che riceva in ingresso una stringa siffatta e restituisca, come valore di ritorno, il numero intero

rappresentato dalle sole cifre numeriche presenti nella stringa. Nell’esempio, la funzione deve restituire il valore 83405

(ottenuto estraendo le cifre evidenziate "8AL3N4 R05SA" e calcolando il valore da esse rappresentato).

Riferimenti

Documenti correlati

Il marcato incremento dell’aggregato (+30,9 milioni di euro rispetto a fine anno precedente) è effetto di più fattori concomitanti: la descritta modifica ad inizio 2019, in coerenza

Al termine del tempo disponibile, riconsegnare l’elaborato scritto solo su questi fogli.. Tracciare un grafico qualitativo

Al termine del tempo disponibile, riconsegnare l’elaborato scritto solo su questi fogli.. Tracciare un grafico qualitativo

Poich´ e, come abbiamo gi` a detto, non ` e possibile determinare a priori l’ordine a cui fermarsi, si deve ”provare”, ripetendo eventualmente il calcolo, se il risultato non si

Anno Accademico 2011/2012 - Primo Semestre (Tutore: Andrea del Monaco)?.

IMPORTANTE: Scrivere il nome su ogni foglio... Soluzioni

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

Valutazione: risposta in italiano o in lingua straniera con meno di 30 parole 0 punti; calcolo del 68% di 25 1 punto; risposta esatta a partire dalla configurazione “1+16” +1