Testo esame 8-6-2000 (1ª prova) Università di Roma ``La Sapienza''
Facoltà di Ingegneria
Corso di Fondamenti di Informatica - A.A.å
Corso di Laurea:
Ambiente e Territorio
Appello del 8 giugno 2000 - 1a prova scritta
tempo a disposizione: 2 ore

Problema 1 (18 punti) Un amministratore di condominio registra i pagamenti effettuati dai proprietari degli appartamenti in un array di strutture A. Se per un appartamento del condominio è stato effettuato almeno un pagamento, allora sono rappresentate in A le seguenti informazioni:

Ad esempio, in un certo istante l'array A potrebbe contenere le seguenti informazioni.

Mario Rossi A 3 800.0 cella 0
Luca Neri C 6 980.0 cella 1
Mario Rossi A 4 120.0 cella 2

Si richiede di risolvere i seguenti punti:

  1. Scrivere le dichiarazioni dei tipi di dato C da utilizzarsi per risolvere i punti successivi.
  2. Scrivere una funzione C (o più) che consenta all'amministratore di aggiornare l'array a fronte di un pagamento relativo ad un certo appartamento. In particolare la funzione riceve in input l'array A, l'ammontare a del pagamento, la scala s e l'interno i dell'appartamento. Se in A l'appartamento identificato da s ed i è già stato registrato, allora la funzione deve aumentare della quantità a il totale pagato fino a quel momento per l'appartamento. Altrimenti, la funzione deve:

    1. instaurare con l'utente un dialogo, tramite opportune stampe su schermo, finalizzato a conoscere nome e cognome del proprietario dell'appartamento in questione;
    2. registrare in A tutti i dati del pagamento, inserendo una nuova struttura in una posizione qualsiasi dell'array, senza cancellare informazioni pre-esistenti.

  3. Scrivere una funzione C (o più) che consenta all'amministratore di stampare su un file di testo l'ammontare pagato da ciascun proprietario fino a quel momento, tenendo conto che potrebbero esistere persone che sono proprietarie di più appartamenti. In particolare la funzione riceve come parametri di input l'array A e il nome fisico f di un file, e deve scrivere in f una riga per ogni proprietario p registrato in A che contiene: nome e cognome di p, totale pagato da p per tutti i suoi appartamenti. Ad esempio, facendo riferimento all'array sopra riportato, la funzione deve produrre un file con le seguenti informazioni:

    Mario Rossi 920.0 prima riga
    Luca Neri 980.0 seconda riga

    La funzione non deve alterare l'array A.
    [Suggerimento: usare un array provvisorio per duplicare A ed eliminare via via le informazioni di cui si è già tenuto conto.]


File translated from TEX by TTH, version 2.25.
On 9 Jun 2000, 12:57.