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