Salta ai contenuti. | Salta alla navigazione

Strumenti personali

22 dicembre 2016 - PM

Fondamenti di Informatica - Compito A

Prof. Marco Gavanelli

22 dicembre 2016

1  Esercizio (punti 16)

Il file di testo  movimenti.txt contiene i movimenti avvenuti in un conto corrente bancario in un mese. I movimenti sono al massimo 100.

Per ogni movimento si hanno i seguenti dati:

  • giorno (intero)
  • cifra (float)

La cifra può essere positiva (per un'entrata di denaro) o negativa (per un'uscita di denaro).

Si sa che all'inizio del mese il conto corrente è vuoto (contiene 0 € ).

Il proprietario ha saputo che in un certo giorno il conto è andato in rosso, ovvero la cifra che conteneva è diventata negativa; da quando lo ha saputo ha inserito denaro nel conto corrente e il conto non è più andato in negativo.

Si desidera sapere per quanti giorni il conto è rimasto in negativo.

Ad esempio, se il file movimenti.txt contiene

1 100
3 -50
5 100
10 -200
15 -10
16 50
18 100
20 50
25 -10

il conto corrente è andato in negativo il giorno 10 (infatti il giorno 1 conteneva 100 € , il giorno 3 ne conteneva 50, il 5 conteneva 150 €  ed il giorno 10 ne conteneva -50). Il conto torna in positivo il giorno 18 (infatti il giorno 15 conteneva -60 € , il 16 conteneva -10 €  ed il 18 conteneva 90 € ).

Non è necessario considerare i giorni successivi in quanto, come già spiegato, si sa che una volta che il conto corrente torna in positivo non va più in negativo.

Quindi il numero di giorni in cui è rimasto negativo è 8 (dal 10 al 18).

Si organizzi il programma come segue:

  1. nel main ,
    • si invochi una procedura o funzione di lettura (da sviluppare nel punto 2);
    • si invochi una procedura/funzione (da sviluppare al punto 3) che, usando l'array letto al punto 2, calcola per quanti giorni il conto è rimasto in negativo;
    • infine, si stampi il numero di giorni in cui il conto è rimasto in negativo
  2. Si scriva la procedura o funzione di lettura; essa legge il file movimenti.txt , ne porta il contenuto in un opportuno array di strutture e visualizza tale array.
  3. Si scriva una procedura/funzione che prende come parametro l'array letto al punto 2 (più, eventualmente, altri parametri) e fornisce al main il numero di giorni in cui il conto è rimasto in negativo.

È indispensabile organizzare opportunamente il programma in procedure e funzioni; è quindi altamente consigliabile aggiungere altre procedure/funzioni oltre a quelle indicate esplicitamente nel testo.

2  Esercizio (punti 4)

I movimenti di un altro conto corrente sono invece riportati nel file di testo  movanno.txt . In questo conto, per ogni movimento, sono riportati

  • giorno, mese ed anno: interi
  • cifra: float

I movimenti non sono relativi ad un solo mese, ma possono riferirsi a tutto l'anno. Anche in questo caso, il numero di movimenti è al massimo 100.

Inoltre, in questo caso non si sa se il conto va in negativo, né quante volte: ad una certa data potrebbe essere in positivo, poi andare in negativo, poi tornare positivo, poi di nuovo negativo, ecc.

Si desidera sapere per quanti giorni nell'arco dell'anno è stato in negativo.



È indispensabile organizzare il programma in opportune procedure e/o funzioni.