Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I
Prova scritta del 18 giugno 2015
Esercizio 1 (15 punti)
Una comunità di un numero N (minore o uguale a 1000) di individui deve eleggere il proprio capo. Il meccanismo di votazione è molto semplice:
1) non ci sono liste di candidati (cioè tutti possono essere votati)
2) ogni individuo può votare per una o più altre persone, esprimendo da 0 (scheda bianca) a N voti (è consentito votare per se stessi ma non due volte per la stessa persona)
4) viene eletto chi ha ricevuto il massimo numero di voti; in caso di parità si sceglie a caso uno dei vincitori
Al termine della votazione i voti risultano memorizzati in un file il cui formato può essere dedotto dal seguente esempio:
3 ROSSI VERDI BIANCHI 2 GIALLI VERDI
1 NERI 0
4 BIANCHI NERI ROSSI VERDI
Si osservi che i nomi sono unici e sempre costituiti da una sola parola interamente scritta in maiuscolo. Ogni riga rappresenta una scheda elettorale compilata e il numero all’inizio indica il numero di voti espressi in tale scheda.
Si assuma che il file non contenga errori e soddisfi le regole sopra riportate.
Si scriva una funzione in linguaggio C che riceva come argomento il nome di un file siffatto e restituisca, in un’apposita struttura, il nome del vincitore e il numero di voti ricevuti.
NOTA - Nell’esempio seguente:
2 NERI GIALLI
3 GIALLI NERI BIANCHI
la funzione può restituire come vincitore GIALLI o NERI, indifferentemente.
Esercizio 2 (15 punti)
Un file contiene una matrice di numeri interi, di dimensione massima 20x20, il cui formato può essere dedotto dal seguente esempio:
3 6
5 0 7 445 99 8 2 -12 99 0 5 8 445 445 0 -100 7 25
Come si può osservare, la prima riga riporta il numero di righe e il numero di colonne della matrice.
Un secondo file contiene un elenco di numeri interi, su una o più righe, come nel seguente esempio:
6 154 99 2 -12 445 0
Si scriva un programma che riceva sulla riga di comando il nome di due file nei formati sopra descritti, e scriva sul monitor, per ciascuno dei numeri contenuti nel secondo file, le coordinate della matrice alle quali si trova tale numero. Il formato di stampa deve essere quello del seguente esempio, che si riferisce ai file sopra riportati:
6:
154:
99: {0, 4} {1, 2}
2: {1, 0}
-12: {1, 1}
445: {0, 3} {2, 0} {2, 1}
0: {0, 1} {1, 3} {2, 2}