Però quando stampa la media (la media goal) mi esce sempre 0.0000, anche quando il suo valore vero è 0.2 o poco più basso.
Anche dichiarando nella struct player le variabili goal e minuti come float (essendo questi due i valori usati per calcolare la media), il problema sussiste.
Grazie in anticipo.
- Codice:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
//Crea un programma contenente una funzione che genera un elenco di calciatori ed una funzione che
//seleziona il migliore di loro in base alla media gol.
typedef struct player {
char cognome[20];
int goal;
int minuti;
} player;
typedef player elenco[20];
void inserimento (elenco e, int *k);
void bestgoleador (elenco e, int k);
int main () {
elenco z;
int m=0;
int a=1;
while (a>0)
{
inserimento (z, &m);
printf ("digita 0 per terminare gli inserimenti, altrimenti digitare altro numero: ");
scanf ("%d", &a);
}
bestgoleador (z, m);
system ("PAUSE");
return 0;
}
void inserimento (elenco e, int *k)
{
printf ("inserisci cognome: ");
scanf ("%s", &e[*k].cognome);
printf ("inserisci il numero di goal: ");
scanf ("%f", &e[*k].goal);
printf ("inserisci il numero di minuti giocati: ");
scanf ("%f", &e[*k].minuti);
*k=*k+1;
}
void bestgoleador (elenco e, int k)
{
int i=0, s=0;
float med, c;
med=e[i].minuti/e[i].goal;
i=1;
while (i<k)
{
c=e[i].minuti/e[i].goal;
if (c>med)
{
med=c;
s=i;
}
i++;
}
printf ("il miglior goleador è: %s ", e[s].cognome);
printf ("con una media di %f goal al minuto\n");
}