22 settembre 2006
Fondamenti di Informatica 1 - Compito A
Prof. Marco Gavanelli
22 Settembre 2006
Esercizio (16 punti)
Lo stabilimento balneare Aringa usa fare credito ai propri clienti. Ogni volta che un cliente compra a credito, viene memorizzato il suo cognome ed il costo dell'acquisto in un file di testo CREDITI.TXT . I dati presenti nel file sono i seguenti
- cognome (stringa di 20 caratteri, senza spazi)
- costo (int)
Per ogni cliente possono esserci più acquisti. Il file contiene al più 100 elementi.
Si desidera visualizzare a video il debito totale di ciascuno dei clienti, usando il seguente algoritmo:
- Si definisca una funzione ricerca (che verrà invocata nel punto 2) che prende in ingresso
- un cliente
- un array di clienti (cioè array di strutture cognome, costo)
- se il cliente è presente, la funzione restituisce la posizione (l'indice) del cliente nell'array
- altrimenti, la funzione restituisce -1;
- Si definisca una procedura inserimento (che verrà invocata nel punto 3) che prende in ingresso
- un cliente
- un array di clienti
- se il cliente non è presente nell'array, lo inserisce in fondo all'array;
- altrimenti (se il cliente è già presente nell'array), sostituisce il costo riportato nell'array con la somma dei due costi (quello nella variabile cliente e quello riportato nell'array per quel cliente).
inserendo {BIANCHI, 5} si otterrà:ROSSI 10 BIANCHI 20 (dati non significativi) ... (dati non significativi) ... ... ...
Inserendo ora {VERDI,8} si otterrà:ROSSI 10 BIANCHI 25 (dati non significativi) ... (dati non significativi) ... ... ... ROSSI 10 BIANCHI 25 VERDI 8 (dati non significativi) ... ... ... - Nel main, si leggano gli elementi del file e li si inseriscano nell'array, invocando la procedura inserimento definita al punto 2 per ciascun elemento del file.
- Si stampi a video il contenuto dell'array.
Ad esempio, se il file CREDITI.TXT contiene i seguenti dati
| ROSSI | 10 |
| BIANCHI | 20 |
| BIANCHI | 5 |
| VERDI | 8 |
| ROSSI | 3 |
il programma dovrà visualizzare:
ROSSI 13
BIANCHI 25
VERDI 8