• Non ci sono risultati.

Fondamenti di Informatica I / Fondamenti di Programmazione Prova scritta del 23 febbraio 2012 Esercizio 1 (17 punti)

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica I / Fondamenti di Programmazione Prova scritta del 23 febbraio 2012 Esercizio 1 (17 punti)"

Copied!
1
0
0

Testo completo

(1)

Fondamenti di Informatica I / Fondamenti di Programmazione Prova scritta del 23 febbraio 2012

Esercizio 1 (17 punti)

Il calendario dell’anno in corso è rappresentato come riportato a lato. Si assuma che tale calendario sia già stato opportunamente inizializzato con i valori corrispondenti all’anno 2012. Il giorno 9 dicembre è rappresentato dall’elemento della matrice anno_2012[12][9].

Evidentemente, non tutte le celle della matrice saranno occupate (come per esempio tutte quelle con indice 0 per il mese o per l’anno, o quelle corrispondenti ai giorni dal 29 al 31 febbraio, o 30-31 febbraio negli anni bisestili).

Il campo codice_giorno_della_settimana ha valore 1 per il lunedì, 2 per il martedi`, ..., 7 per la domenica. Il campo festivo ha valore 1 se il giorno è festivo e 0 altrimenti. Il campo fase_lunare è il numero d’ordine del giorno del mese lunare.

Si dispone inoltre di un file anagrafico contenente, uno per riga, nome, cognome e data di nascita di un certo numero di persone, il cui formato può essere dedotto dall’esempio seguente:

Franco; Della Valle Di Sotto; 5-lug-2002;

Gian Luca; De Luca; 12-mag-2001;

Mario; Rossi; 3-gen-1988;

Pier Luigi Giovanni Alberto; Da Re; 27-set-1970;

La lunghezza del file è ignota. Si assuma che tutte le date nel file siano corrette.

Si scriva una funzione in linguaggio C che riceva come argomenti il nome di un file anagrafico come quello appena descritto e il calendario dell’anno in corso. La funzione deve stampare il numero di compleanni delle persone presenti nel file che cadono, quest’anno, in ciascun giorno della settimana.

Con riferimento all’esempio sopra riportato:

DISTRIBUZIONE COMPLEANNI:

lunedi` 0 martedi` 1 mercoledi` 0 giovedi` 2 venerdi` 0 sabato 1 domenica 0

NOTA: ai fini del lavoro di correzione da svolgere a casa o in laboratorio, all’indirizzo

http://www.diegm.uniud.it/pierluca/public_html/downloads/teaching/luna_e_nascite/

si trovano i file calendario.c e calendario.h che permettono, con opportuni adattamenti, di costruire il calendario 2012 necessario per il test del programma.

Esercizio 2 (13 punti)

Si scriva una funzione in linguaggio C che riceva come argomenti una matrice di interi A, le sue dimensioni n e m, una matrice di interi B (che conterrà il risultato dell'operazione e la cui dimensione è pari a quella di A) ed un intero t. La funzione deve riempire la matrice B con le righe della matrice A per le quali la somma degli elementi è compresa tra -t e t. La funzione, inoltre, dovrà restituire un intero corrispondente al numero di righe di A che sono state copiate in B. Ad esempio, nel caso della matrice A riportata di seguito e del valore t = 4, la funzione deve riempire la matrice B come indicato e restituire il valore 2.

⎟ ⎟

⎜ ⎜

=

5 0 1 4

2 7 5 3

6 3 0 2

A ⎟⎟ ⎠

⎜⎜ ⎞

= −

5 0 1 4

2 7 5 B 3

.

struct info_giorno {

char codice_giorno_della_settimana;

char festivo;

char fase_lunare;

};

struct info_giorno anno_2012[13][32];

Riferimenti

Documenti correlati

Esercizio 2 (6 punti) Scrivi un metodo statico (comprensivo di prototipo) che prende in ingresso (cioè come parametro) tre numeri interi e che restituisce il maggiore

Esercizio 2 (6 punti) Scrivi un metodo statico (comprensivo di prototipo) che prende in ingresso (cioè come parametro) una matrice di interi e che restituisce la somma degli

Si assumano gi` a disponibili la definizione del tipo struct Data (nel classico formato a tre campi) e la funzione int ComparaDate(struct Data d1, struct Data d2), che restituisce -1

La funzione deve inoltre restituire il valore 1 nel caso in cui almeno una delle locazioni del file non sia presente nel vettore; deve restituire 2 nel caso in cui si verifichi

Esercizio 1 (punti 15) Un file contiene delle informazioni riguardanti la media dei voti degli esami sostenuti da alcuni studenti, uno per riga.. In dettaglio, ciascuna riga `e

Si scriva una funzione C che prenda come parametri un punto p nel piano e un vettore di cerchi (e la sua dimensione) e restituisca il punto che rappresenta il centro del pi` u

Si scriva un programma che riceva sulla riga di comando il nome di un file siffatto e una destinazione e stampi i codici di tutti i treni che raggiungono tale destinazione in

Si scriva un programma in linguaggio C che riceva come argomenti sulla riga di comando il nome della località e una data e chiami la funzione descritta nell’esercizio