Stampa migliori atleti
La matrice gara rappresenta le squadre come righe e i rispettivi atleti come colonne. La proprietà "sesso" del tipo atleta distingue uomini ('m') e donne ('f'); assumiamo che le squadre siano miste. La proprietà "punteggio_finale" esprime il punteggio complessivo ottenuto da un atleta durante tutta la manifestazione.
Scrivere in C la funzione void stampa_migliori(gara G) che stampa a schermo la migliore donna e il miglior uomo della competizione, data una matrice di tipo gara come input.
void stampa_migliori (gara G) {
atleta uomo, donna; // dichiarazione e inizializzazione variabili
uomo.punteggio_finale = 0;
donna.punteggio_finale = 0;
// ricerca migliori in maniera separata
for (int i=0; i<NUM_SQUADRE; i++) {
for (int j=0; j<NUM_ATLETI_PER_SQUADRA; j++) {
if (G[i][j].sesso == 'm' && // uomini
G[i][j].punteggio_finale > uomo.punteggio_finale)
uomo = G[i][j];
if (G[i][j].sesso == 'f' && // donne
G[i][j].punteggio_finale > donna.punteggio_finale)
donna = G[i][j];
}
}
}
donneG[i][j].punteggio_finale > donna.punteggio_finale)donna = G[i][j];}}
// stampa risultati, se trovati
if (donna.punteggio_finale > 0)
printf ("Donna più forte della gara: %s %s, %s\n",donna.nome, donna.cognome, donna.nazionalita);
else
printf ("Nessuna donna ha partecipato alla gara.\n");
if (uomo.punteggio_finale > 0)
printf ("Uomo più forte della gara: %s %s, %s\n",uomo.nome, uomo.cognome, uomo.nazionalita);
else
printf ("Nessun uomo ha partecipato alla gara.\n");
}
Se si continua sul retro di qualche foglio, indicare quale
Informatica A – a.a. 2016/2017 – 1mo Appello – 27/02/2017 Esercizio n. 3 -- foglio 6 di 9
(c) Siano ora date le seguenti definizioni (in aggiunte a quelle precedenti):
typedef struct struttura_lista {
atleta tuffatore;
struct struttura_lista *next;
} nodo_lista;
typedef nodo_lista *lista_atleti;
Implementare in C la funzione
lista_atleti crea_lista(gara G) lista dinamica che, data una matrice di tipo gara,
Atleti migliori per squadra
Nota: in una squadra può esserci più di un atleta che ha totalizzato lo stesso miglior punteggio tra quelli della sua squadra.
// funzione ausiliaria per la ricerca del punteggio più alto tra quelli degli atleti di una squadra
float ottieni_punteggio_massimo(atleta squadra[]) {
NUM_ATLETI_PER_SQUADRA
float punti = 0.0;
for (int j = 0; j < NUM_ATLETI_PER_SQUADRA; j++) {
if (squadra[j].punteggio_finale > punti) {
punti = squadra[j].punteggio_finale;
}
}
return punti;
}
// funzione ausiliaria per l'inserimento in testa in una lista
lista_atleti aggiungi_nodo(lista_atleti lista, atleta tuffatore) {
lista_atleti temp = (lista_atleti) malloc(sizeof(nodo_lista));
temp->tuffatore = tuffatore;
temp->next = lista;
lista = temp;
return lista;
}
obiettivolista_atleti crea_lista(gara G) {
NULL;
lista_atleti lista = float punti;
for (int i = 0; i < NUM_SQUADRE; i++) {
= punti ottieni_punteggio_massimo(G[i]);
for (int j = 0; j < NUM_ATLETI_PER_SQUADRA; j++) {
if (punti == G[i][j].punteggio_finale)
lista = aggiungi_nodo(lista, G[i][j]);
} // end for j
} // end for i
return lista;
}
Se si continua sul retro di qualche foglio, indicare quale
Informatica A – a.a. 2016/2017 – 1mo Appello – 27/02/2017 Esercizio n. 3 -- foglio 7 di 9
-
Prova d'esame Informatica svolta
-
Prova d'esame Informatica A svolta
-
Geometria e Algebra - prova d'esame 2001
-
Reti di Calcolatori - prova d'esame 2005