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.