Corso di Programmazione - Prova Pratica - 30 gennaio 2004


L'esame di oggi ha a che fare con una forma semplice (ma rischiosa!) di investimento bancario: il fondo azionario.
Il cliente di una banca che decide di investire i suoi soldi in borsa apre un fondo azionario che serve a gestire i suoi investimenti. Un fondo azionario e' una raccolta di tante azioni che vengono comprate e vendute a seconda dell'andamento del mercato.

Per rappresentare un fondo azionario useremo il tipo Fondo, ovvero una struttura avente come campi una lista di azioni comprate e un numero corrispondente al valore di quel fondo. Il valore di un fondo e' la somma dei valori di tutte le azioni acquistate. Ogni giorno, con il variare dell'andamento della borsa, le azioni cambiano di valore, e di conseguenza ogni giorno cambia anche il valore totale del fondo.

Le azioni contenute nel fondo bancario sono rappresentate da valori di tipo Azione, ovvero strutture con 3 campi corrispondenti al nome del titolo (es. Fiat, Enel,...), al numero di azioni di quel titolo acquistate nel fondo, e al valore giornaliero di una singola azione di quel titolo.

typedef struct Azione {
char titolo[10];
int quantita;
double valore_azione;
} Azione;


typedef struct Elem {
Azione azione;
struct Elem* next;
} Elem;

typedef Elem* ListaAzioni;

typedef struct {
ListaAzioni azioni;
double valore_fondo;
} Fondo;

Esercizio 1: Implementare la seguente procedura:

void stampa_azione( Fondo f, Azione a);

La procedura stampa_azione deve dare una rappresentazione a video dello stato dell'azione a nel fondo azionario f passati come parametri attuali.


Esercizio 2: Implementare la seguente procedura:

void aggiorna (Fondo *f, char *tit, double x);

La procedura aggiorna modifica un fondo azionario  tenendo conto del fatto che il valore del titolo corrispondente al parametro tit ha avuto una crescita percentuale pari al valore  passato come ultimo parametro attuale. Piu' precisamente, la procedura deve scorrere la lista di azioni contenute nel fondo, identificare quelle corrispondenti al titolo tit, incrementare il loro valore della percentuale in x (ad esempio un aumento del 10% corrisponde ala valore 0.1 di x), ed infine aggiornare il valore totale del fondo.


Esercizio 3: Implementare la seguente funzione:

char* prevalente(Fondo f);

La funzione prevalente restituisce il nome dell'azione che ha maggior peso (guardando il numero di azioni e il loro valore) nel portafoglio rappresentato dal fondo f.


La modalitÓ di consegna dell'esame Ŕ analoga a quella delle esercitazioni durante il corso: Ŕ sufficiente inviarlo come esercitazione numero 836. Bisogna inserire esclusivamente la definizione delle procedure, per consentirne la correzione automatica.