• 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

2) (Max 10 punti) – 5 punti per ogni semestre di esperienza professionale acquisita mediante attività di tirocinio e/o di stage presso il MiBACT. 2, superiori ad un semestre, il

PAGAMENTO CANONI DI

METANO AUTOTRAZIONE CONTINI S.R.L... ROMANA TECNOLOGIE

Die Mitarbeiter arbeiten über der Leistungsgrenze. Wir müssen etwas unternehmen.. Wir haben Glück und wir haben auch eine soziale Verantwortung.. Wir haben das technische Know-How.

Dank Digitalisierung gelingt es, Daten in Echtzeit zu monitorieren - Das wiederum führt zu einem besseren Verständnis der Auswirkungen von Entscheidungen... Measure

…bis heute: Eröffnung Produktionshalle, Lobis CaféBar, (10 Eigenmarken, German Design Award 2018 &amp;. 2020, Innovationspreis 2017 &amp; 2019, BigSEE

Kontinuierliche Kommunikation und strukturiertes Feedback gegenüber Mitarbeitern und anderen Abteilungen. Was bedeutet Smart Working für

„1+1 Fertigung“ muss beibehalten werden und zugliech die Effizienz gesteigert werden.. Die digitalen Technologien helfen