Estratto del documento

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

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

Anteprima
Vedrai una selezione di 3 pagine su 9
Prova d'esame Informatica risolta Pag. 1 Prova d'esame Informatica risolta Pag. 2
Anteprima di 3 pagg. su 9.
Scarica il documento per vederlo tutto.
Prova d'esame Informatica risolta Pag. 6
1 su 9
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher osokriky di informazioni apprese con la frequenza delle lezioni di fondamenti di informatica e programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano o del prof Daniel Florian.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community