• Non ci sono risultati.

Fondamenti di Informatica I / Fondamenti di Programmazione Prova scritta del 23 febbraio 2009 Compito A

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica I / Fondamenti di Programmazione Prova scritta del 23 febbraio 2009 Compito A"

Copied!
4
0
0

Testo completo

(1)

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

Compito A

Esercizio 1 (punti 15) Si consideri un file che contiene uno per riga degli spostamenti di veicoli da una locazione ad un’altra. Ciascuna riga `e composta da: il nome della locazione di partenza, la sequenza di caratteri --> e il nome della locazione di arrivo (separati da uno o pi`u spazi bianchi). I nomi delle locazioni sono lunghi al massimo 10 caratteri e non contengono spazi bianchi.

Come esempio si consideri il seguente file:

Roma --> Milano Milano --> Torino Roma --> Genova Roma --> Genova

Si consideri inoltre il seguente tipo di dato che memorizza per ogni locazione il nome e il numero di veicoli presenti.

struct Deposito {

char locazione[11];

int num_veicoli;

};

Si scriva una funzione C che prenda come parametri il nome di un file il cui contenuto ha il formato descritto e un vettore di elementi di tipo struct Deposito (e la sua lunghezza). Il vettore descrive la situazione iniziale dei veicoli nelle varie locazioni. La funzione deve modificare il vettore in modo che corrisponda alla situazione dopo aver eseguito gli spostamenti presenti nel file.

Ad esempio, se il vettore contiene i valori qui sotto a sinistra e il file `e quello dell’esempio, allora all’uscita della funzione il vettore dovr`a avere i valori descritti a destra.

Roma 3

Milano 8 Torino 5 Genova 10

Roma 0

Milano 8 Torino 6 Genova 12

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 una situazione (anche temporanea) in cui il numero di veicoli in una locazione `e minore di 0. Deve restituire 0 in caso di funzionamento normale.

Esercizio 2 (punti 15) Si scriva una funzione C che prenda come parametri due stringhe, di cui la prima contiene una data nel formato gg mese in lettere aaaa. La funzione deve scrivere nella seconda stringa la data tradotta in inglese nel formato illustrato dai seguenti esempi (si noti che nel formato inglese non `e presente lo 0 davanti ai giorni composti da una sola cifra).

Stringa in ingresso Stringa in uscita 12 gennaio 1982 January 12th, 1982 03 febbraio 1977 February 3rd, 1977 05 marzo 1977 March 5th, 1977 21 maggio 1977 May 21st, 1977 Si consideri disponibile la funzione:

void CalcolaSuffisso(char giorno[], char suffisso[]);

che scrive nel parametro suffisso la stringa corretta ("th", "st", "nd" o "rd") corrispondente al giorno scritto nella stringa giorno.

Per il compito in classe non `e richiesto di scrivere esplicitamente tutti i 12 casi dei nomi dei mesi, ma `e sufficienti scrivere 2-3 casi e lasciare in bianco gli altri.

(2)

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

Compito B

Esercizio 1 (punti 15) Si consideri un file che contiene uno per riga degli spostamenti di veicoli da una locazione ad un’altra. Ciascuna riga `e composta da: la parola da, il nome della locazione di partenza, la parola a e il nome della locazione di arrivo (separati da uno o pi`u spazi bianchi). I nomi delle locazioni sono lunghi al massimo 20 caratteri e non contengono spazi bianchi.

Come esempio si consideri il seguente file:

Da Roma a Milano

Da Milano a Torino

Da Roma a Genova

Da Roma a Genova

Si consideri inoltre il seguente tipo di dato che memorizza per ogni locazione il nome e il numero di veicoli presenti.

struct Locazione {

char nome[21];

int veicoli;

};

Si scriva una funzione C che prenda come parametri il nome di un file il cui contenuto ha il formato descritto e un vettore di elementi di tipo struct Locazione (e la sua lunghezza). Il vettore descrive la situazione iniziale dei veicoli nelle varie locazioni. La funzione deve modificare il vettore in modo che corrisponda alla situazione dopo aver eseguito gli spostamenti presenti nel file.

Ad esempio, se il vettore contiene i valori qui sotto a sinistra e il file `e quello dell’esempio, allora all’uscita della funzione il vettore dovr`a avere i valori descritti a destra.

Roma 3

Milano 8 Torino 5 Genova 10

Roma 0

Milano 8 Torino 6 Genova 12

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 -1 nel caso in cui si verifichi una situazione (anche temporanea) in cui il numero di veicoli in una locazione `e minore di 0. Deve restituire 0 in caso di funzionamento normale.

Esercizio 2 (punti 15) Si scriva una funzione C che prenda come parametri due stringhe, di cui la prima contiene una data nel formato gg mese in lettere aaaa. La funzione deve scrivere nella seconda stringa la data tradotta in inglese nel formato illustrato dai seguenti esempi (si noti che nel formato inglese non `e presente lo 0 davanti ai giorni composti da una sola cifra).

Stringa in ingresso Stringa in uscita 12 gennaio 1982 January 12th, 1982 03 febbraio 1977 February 3rd, 1977 05 marzo 1977 March 5th, 1977 21 maggio 1977 May 21st, 1977 Si consideri disponibile la funzione:

void TrovaSuffisso(char giorno[], char suffisso[]);

che scrive nel parametro suffisso la stringa corretta ("th", "st", "nd" o "rd") corrispondente al giorno scritto nella stringa giorno.

Per il compito in classe non `e richiesto di scrivere esplicitamente tutti i 12 casi dei nomi dei mesi, ma `e sufficienti scrivere 2-3 casi e lasciare in bianco gli altri.

(3)

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

Compito C

Esercizio 1 (punti 15) Si consideri un file che contiene uno per riga degli spostamenti di veicoli da una locazione ad un’altra. Ciascuna riga `e composta da: il nome della locazione di partenza, la sequenza di caratteri --> e il nome della locazione di arrivo (separati da uno o pi`u spazi bianchi). I nomi delle locazioni sono lunghi al massimo 30 caratteri e non contengono spazi bianchi.

Come esempio si consideri il seguente file:

Roma --> Milano Milano --> Torino Roma --> Genova Roma --> Genova

Si consideri inoltre il seguente tipo di dato che memorizza per ogni locazione il nome e il numero di veicoli presenti.

struct Deposito {

char locazione[31];

int veicoli;

};

Si scriva una funzione C che prenda come parametri il nome di un file il cui contenuto ha il formato descritto e un vettore di elementi di tipo struct Deposito (e la sua lunghezza). Il vettore descrive la situazione iniziale dei veicoli nelle varie locazioni. La funzione deve modificare il vettore in modo che corrisponda alla situazione dopo aver eseguito gli spostamenti presenti nel file.

Ad esempio, se il vettore contiene i valori qui sotto a sinistra e il file `e quello dell’esempio, allora all’uscita della funzione il vettore dovr`a avere i valori descritti a destra.

Roma 3

Milano 8 Torino 5 Genova 10

Roma 0

Milano 8 Torino 6 Genova 12

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 una situazione (anche temporanea) in cui il numero di veicoli in una locazione `e minore di 0. Deve restituire 0 in caso di funzionamento normale.

Esercizio 2 (punti 15) Si scriva una funzione C che prenda come parametri due stringhe, di cui la prima contiene una data nel formato gg mese in lettere aaaa. La funzione deve scrivere nella seconda stringa la data tradotta in inglese nel formato illustrato dai seguenti esempi (si noti che nel formato inglese non `e presente lo 0 davanti ai giorni composti da una sola cifra).

Stringa in ingresso Stringa in uscita 12 gennaio 1982 January 12th, 1982 03 febbraio 1977 February 3rd, 1977 05 marzo 1977 March 5th, 1977 21 maggio 1977 May 21st, 1977 Si consideri disponibile la funzione:

void CalcolaLettere(char giorno[], char lettere[]);

che scrive nel parametro lettere la stringa corretta ("th", "st", "nd" o "rd") corrispondente al giorno scritto nella stringa giorno.

Per il compito in classe non `e richiesto di scrivere esplicitamente tutti i 12 casi dei nomi dei mesi, ma `e sufficienti scrivere 2-3 casi e lasciare in bianco gli altri.

(4)

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

Compito D

Esercizio 1 (punti 15) Si consideri un file che contiene uno per riga degli spostamenti di veicoli da una locazione ad un’altra. Ciascuna riga `e composta da: la parola da, il nome della locazione di partenza, la parola a e il nome della locazione di arrivo (separati da uno o pi`u spazi bianchi). I nomi delle locazioni sono lunghi al massimo 40 caratteri e non contengono spazi bianchi.

Come esempio si consideri il seguente file:

Da Roma a Milano

Da Milano a Torino

Da Roma a Genova

Da Roma a Genova

Si consideri inoltre il seguente tipo di dato che memorizza per ogni locazione il nome e il numero di veicoli presenti.

struct Locazione {

char nome[41];

int num_veicoli;

};

Si scriva una funzione C che prenda come parametri il nome di un file il cui contenuto ha il formato descritto e un vettore di elementi di tipo struct Locazione (e la sua lunghezza). Il vettore descrive la situazione iniziale dei veicoli nelle varie locazioni. La funzione deve modificare il vettore in modo che corrisponda alla situazione dopo aver eseguito gli spostamenti presenti nel file.

Ad esempio, se il vettore contiene i valori qui sotto a sinistra e il file `e quello dell’esempio, allora all’uscita della funzione il vettore dovr`a avere i valori descritti a destra.

Roma 3

Milano 8 Torino 5 Genova 10

Roma 0

Milano 8 Torino 6 Genova 12

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 1 nel caso in cui si verifichi una situazione (anche temporanea) in cui il numero di veicoli in una locazione `e minore di 0. Deve restituire 0 in caso di funzionamento normale.

Esercizio 2 (punti 15) Si scriva una funzione C che prenda come parametri due stringhe, di cui la prima contiene una data nel formato gg mese in lettere aaaa. La funzione deve scrivere nella seconda stringa la data tradotta in inglese nel formato illustrato dai seguenti esempi (si noti che nel formato inglese non `e presente lo 0 davanti ai giorni composti da una sola cifra).

Stringa in ingresso Stringa in uscita 12 gennaio 1982 January 12th, 1982 03 febbraio 1977 February 3rd, 1977 05 marzo 1977 March 5th, 1977 21 maggio 1977 May 21st, 1977 Si consideri disponibile la funzione:

void TrovaLettere(char giorno[], char lettere[]);

che scrive nel parametro lettere la stringa corretta ("th", "st", "nd" o "rd") corrispondente al giorno scritto nella stringa giorno.

Per il compito in classe non `e richiesto di scrivere esplicitamente tutti i 12 casi dei nomi dei mesi, ma `e sufficienti scrivere 2-3 casi e lasciare in bianco gli altri.

Riferimenti

Documenti correlati

"Avatar": Sam Worthington, Zoe Saldana, Sigourney Weaver, Stephen Lang, Michelle Rodriguez. "Everest": Josh Brolin, Jason Clarke, John Hawkes, Robin Wright,

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

Si scriva una funzione che riceva come argomenti il nome del file di equivalenze sopra descritto, il nome di un file di grandezze (con i punti interrogativi) e il nome di un file

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

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