Scusate non saprei dare un titolo più appropriato alla discussione.
Ho in problema con la funzione che vi posto qui in basso (void inserisciDati(batteria[]), precisamente).
codice:
codice:#include <stdio.h> #include <string.h> #define V 20 #define D 10 #define O 8 typedef struct { char nome [V]; char cognome [V]; int eta; float tempo; }atleta; typedef struct { atleta atleta[O]; char sesso; }batteria; void inserisciDati(batteria[]); float mediaMaschile(batteria[]); int numeroFemmine(batteria[],float); int main() { batteria b[D]; float media; int numf; printf("\n\nREGISTRAZIONI ATLETI:\n"); inserisciDati(b); printf("\nFine Funzione\n"); media=mediaMaschile(b); numf=numeroFemmine(b,media); printf("La media Maschile è di %f, le femmine che hanno fatto un tempo migliore sono %d",media,numf); } void inserisciDati(batteria b[]){ int i,j; for (i=0;i<D;i++){ for(j=0;j<O && j!=-1;){ if (j>0){ while (getchar() != '\n'); } printf("\nInserisci il nome dell'atleta: "); fgets(b[i].atleta[j].nome,V,stdin); if (strcmp(b[i].atleta[j].nome,"\n")==0){ printf("\nFine Inserimento Batteria."); j=-1; } else{ printf("Inserisci il cognome dell'atleta: "); fgets(b[i].atleta[j].cognome,V,stdin); printf("Inserisci l'età dell atleta:"); scanf("%d",&b[i].atleta[j].eta); if (j==0){ printf("Inserisci il sesso dell'atleta: (""m"" o ""f"")"); scanf(" %c",&b[i].sesso); } printf("Tempo registrato:"); scanf("%f",&b[i].atleta[j].tempo); j++; } } } printf("\nFine Ciclo"); return; } float mediaMaschile(batteria b[]){ int i,j,count=0; float tot=0; float media; for (i=0;i<D;i++){ if (b[i].sesso=='m'){ for (j=0;j<O && b[i].atleta[j].nome!=NULL;){ tot=tot+b[i].atleta[j].tempo; count++; } } } media=tot/(float)count; return media; } int numeroFemmine(batteria b[],float media){ int i,j,num=0; for (i=0;i<D;i++){ if (b[i].sesso=='f'){ for (j=0;j<O && b[i].atleta[j].nome!=NULL;){ if (b[i].atleta[j].tempo<media){ num++; } } } } return num; }
Il problema è che il programma non da nè errori ne warning, ma alla fine del ciclo non ritorna nel main() e non mi compare più nulla sul terminale, ho provato di tutto ma non sono riuscito ad arrivare ad una conclusione.
Ho già provato a piazzare fflush(stdin) e fflush(stdout) pensando fosse un problema di buffer.

Rispondi quotando