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 semplicita'  consideriamo dei fondi che investono solamente nei titoli azionari specificati nella definizione del tipo enumerazione Titolo.

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

Infine  rappresentiamo un fondo azionario con il tipo Fondo, ovvero una struttura avente 2 campi: un array  azioni in cui ogni elemento corrisponde ad un pacchetto contenente un certo numero di azioni (es. azioni[fiat]  contiene le informazioni riguardanti le azioni Fiat acquistate dal fondo), e un numero reale valore_fondo 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.

#define N_TITOLI 4

typedef enum Titolo {fiat,enel,telecom,nokia} Titolo;


typedef struct Azione {
Titolo titolo;
int quantita;
double valore_azione;
} Azione;


typedef struct Fondo {
Azione azioni[N_TITOLI];
double valore_fondo;
} Fondo;


Esercizio 1: Implementare la seguente procedura:

void stampa_fondo( Fondo f );

La procedura stampa_fondo deve dare una rappresentazione a video dello stato del fondo azionario passato come parametro attuale.


Esercizio 2: Implementare la seguente funzione:

int opzione(Fondo *f, Titolo tit, double val);

La funzione opzione  controlla se le azioni del titolo tit contenute nel fondo hanno un valore superiore a val, in questo caso la funzione deve vendere tutte le azioni di quel titolo ( eliminandole dal fondo e aggiornando il nuovo valore del fondo) e restituire 1. Se invece le azioni di quel titolo hanno un valore strettamente inferiore a val, la funzione lascia il fondo inalterato e ritorna il valore 0.


Esercizio 3: Implementare la seguente procedura:

void compra(Fonfo *f, double listino[ ]);

La procedura compra deve chiedere all'utente quali e quante azioni vuole comprare. Il prezzo di una singola azione e' determinato dall'array listino passato come secondo parametro, che si assume avere dimensione N_TITOLI. La procedura deve quindi aggiornare i dati del fondo f  tenendo conto dell'acquisto ordinato dall'utente. Si osservi che anche il valore delle azioni comprate deve essere aggiornato al valore riportato nel listino


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