Fondamenti di Informatica I / Fondamenti di Programmazione Prova scritta del 24 gennaio 2011
Esercizio 1 (punti 16) Un file contiene informazioni sui risultati di un corcorso da parte dei candidati. La prima riga contiene il numero di prove (al massimo 5), la seconda i punteggi massimi di ciascuna prova (separati da spazi) e quelle successive i punteggi dei candidati alle prove. I punteggi sono tutti valori interi.
Le prove essenziali sono contrassegnate con un asterisco dopo il punteggio massimo. Il formato esatto `e quello che si evince dal seguente file di esempio.
Esercizi: 3
Punteggio: 40* 30* 30 1. Mario, Rossi, 30 30 15 2. Giuseppe, Bianchi, 22 30 15 3. Francesca Maria, Verdi, 32 17 20 4. Anna Paola, De Neri, 28 21 5
Si noti che nome e cognome (massimo 30 caratteri ciascuno) possono contenere spazi bianchi.
Si scriva una funzione C che riceva come parametri il nome di un file nel formato illustrato e il nome di un file di output.
La funzione deve scrivere nel file di output i candidati che abbiano preso almeno 6/10 del punteggio su ciascuna prova essenziale. Per i candidati selezionati si deve scrivere cognome, nome e somma dei punti.
Ad esempio, se il file `e quello precedente, allora la funzione deve stampare i seguenti candidati
Rossi, Mario, 75
De Neri, Anna Paola, 54
Si noti che i candidati Bianchi e Verdi sono stati esclusi per aver preso preso un punteggio inferiore al minimo nelle prove essenziali 1 e 2 rispettivamente.
Esercizio 2 (punti 14) Si considerino le seguenti definizioni di tipo che rappresentano rispettivamente un punto e un segmento nel piano cartesiano.
struct Punto struct Segmento
{ {
float x; struct Punto inizio;
float y; struct Punto fine;
}; };
Si scriva una funzione C che prenda come parametri un vettore di punti (e la sua dimensione n, con n > 0) che rappresenta una linea spezzata nel piano, memorizzata tramite i suoi vertici.
La funzione deve restituire tramite una variabile del tipo struct Segmento il segmento pi`u lungo della spezzata.
Fondamenti di Informatica I / Fondamenti di Programmazione Prova scritta del 24 gennaio 2011
Esercizio 1 (punti 16) Un file contiene informazioni sui risultati di un corcorso da parte dei candidati. La prima riga contiene il numero di prove (al massimo 10), la seconda i punteggi massimi di ciascuna prova (separati da spazi) e quelle successive i punteggi dei candidati alle prove. I punteggi sono tutti valori interi.
Le prove essenziali sono contrassegnate con un asterisco dopo il punteggio massimo. Il formato esatto `e quello che si evince dal seguente file di esempio.
Esercizi: 3
Punteggio: *40 *30 30 1. Mario, Rossi, 30 30 15 2. Giuseppe, Bianchi, 25 30 15 3. Paola, De Neri, 29 21 7
4. Francesca Maria, Verdi, 32 19 20
Si noti che nome e cognome (massimo 40 caratteri ciascuno) possono contenere spazi bianchi.
Si scriva una funzione C che riceva come parametri il nome di un file nel formato illustrato e il nome di un file di output.
La funzione deve scrivere nel file di output i candidati che abbiano preso almeno 7/10 del punteggio su ciascuna prova essenziale. Per i candidati selezionati si deve scrivere cognome, nome e somma dei punti.
Ad esempio, se il file `e quello precedente, allora la funzione deve stampare i seguenti candidati
Rossi, Mario, 75 De Neri, Paola, 57
Si noti che i candidati Bianchi e Verdi sono stati esclusi per aver preso preso un punteggio inferiore al minimo nelle prove essenziali 1 e 2 rispettivamente.
Esercizio 2 (punti 14) Si considerino le seguenti definizioni di tipo che rappresentano rispettivamente un punto e un segmento nel piano cartesiano.
struct Punto struct Segmento
{ {
float cx; struct Punto p1;
float cy; struct Punto p2;
}; };
Si scriva una funzione C che prenda come parametri un vettore di punti (e la sua dimensione k, con k > 0) che rappresenta una linea spezzata nel piano, memorizzata tramite i suoi vertici.
La funzione deve restituire tramite una variabile del tipo struct Segmento il segmento pi`u corto della spezzata.
prima del
Fondamenti di Informatica I / Fondamenti di Programmazione Prova scritta del 24 gennaio 2011
Esercizio 1 (punti 16) Un file contiene informazioni sui risultati di un corcorso da parte dei candidati. La prima riga contiene il numero di prove (al massimo 20), la seconda i punteggi massimi di ciascuna prova (separati da spazi) e quelle successive i punteggi dei candidati alle prove. I punteggi sono tutti valori interi.
Le prove essenziali sono contrassegnate con un punto esclamativo dopo il punteggio massi- mo. Il formato esatto `e quello che si evince dal seguente file di esempio.
Esercizi: 3
Punteggio: 40! 30! 30
1. Mario Ugo, Rossi, 32 30 15 2. Giuseppe, Bianchi, 25 30 15 3. Francesca Maria, Verdi, 32 19 20 4. Paola, De Neri, 34 25 2
Si noti che nome e cognome (massimo 20 caratteri ciascuno) possono contenere spazi bianchi.
Si scriva una funzione C che riceva come parametri il nome di un file nel formato illustrato e il nome di un file di output.
La funzione deve scrivere nel file di output i candidati che abbiano preso almeno 8/10 del punteggio su ciascuna prova essenziale. Per i candidati selezionati si deve scrivere cognome, nome e somma dei punti.
Ad esempio, se il file `e quello precedente, allora la funzione deve stampare i seguenti candidati
Rossi, Mario Ugo, 77 De Neri, Paola, 61
Si noti che i candidati Bianchi e Verdi sono stati esclusi per aver preso preso un punteggio inferiore al minimo nelle prove essenziali 1 e 2 rispettivamente.
Esercizio 2 (punti 14) Si considerino le seguenti definizioni di tipo che rappresentano rispettivamente un punto e un segmento nel piano cartesiano.
struct Punto struct Segmento
{ {
float x_val; struct Punto p_inizio;
float y_val; struct Punto p_fine;
}; };
Si scriva una funzione C che prenda come parametri un vettore di punti (e la sua dimensione h, con h > 0) che rappresenta una linea spezzata nel piano, memorizzata tramite i suoi vertici.
La funzione deve restituire tramite una variabile del tipo struct Segmento il segmento pi`u lungo della spezzata.