|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2010
Messaggi: 40
|
[C] calcolo del numero di gol segnati da ogni squadra
salve a tutti, vi spiego il mio problema:
ho un vettore calciatori di tipo marcatore, che sarebbe una struttura che contiene i dati di un calciatore (nome, cognome, squadra di appartenenza, numero di gol segnati). Devo scrivere una procedura che calcoli e stampi a video il numero totale dei gol segnati da ogni squadra. Per il momento mi è venuto in mente solo questo: Codice:
for (i=0; i<n; i++) { gol=calciatori[i].gol; for (j=0; j<n; j++) if (i != j && strcmp(calciatori[i].squadra, calciatori[j].squadra) == 0) gol=gol+calciatori[j].gol; printf("La squadra %s ha segnato %d gol.", calciatori[j].squadra, gol); } ![]() Qualcuno mi sa dire come evitare questi inconvenienti? ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 1999
Città: Pistoia
Messaggi: 618
|
Potresti ordinare il vettore di calciatori per squadra e utilizzare l'algoritmo di "rottura di codice"
![]()
__________________
CPU: AMD Phenom II X3 720 BE - MOBO: Asrock AS790GXH/128 - RAM: 2x 2GB Kingston 800 MHz - VGA: Powercolor Ati Radeon HD 4850 512 MB GDDR4 - HD: 320 GB Hitachi Sata II - PSU: Corsair 650VXEU - CASE: Cooler Master Cavalier Netbook Asus 1000HE |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Secondo me una modifica "furba" alle tue strutture dati sarebbe assegnare ad ogni squadra un id numerico, mettendole in un array di stringhe.
Ad esempio, l'array squadre: squadre[0]="Milan" squadre[1]="Juventus" ... In questa maniera, un problema del genere lo potresti risolvere con il for innestato (su squadre[] e giocatori[], non un prodotto cartesiano su giocatori [] come hai fatto tu; tra l'altro ne guadagneresti in velocità di computazione visto che l'array delle squadre dovrebbe essere piuttosto piccolo, rispetto a quello dei giocatori). Va da sè che quindi giocatore[].squadra diventa un int (puoi risalire al nome della squadra in cui milita il giocatore i-esimo con un semplice squadre[giocatore[i].squadra]).
__________________
Il sole è giallo |
![]() |
![]() |
![]() |
#4 | ||
Member
Iscritto dal: Jan 2010
Messaggi: 40
|
Quote:
Codice:
for (i=0; i<n; i++) { gol=calciatori[i].gol; while (strcmp(calciatori[i].squadra, calciatori[i+1].squadra)==0 && i<n-1) { gol=gol+calciatori[i+1].gol; i++; } printf("La squadra %s ha segnato %d gol\n", calciatori[i].squadra, gol); } ![]() Quote:
grazie comunque ![]() |
||
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:32.