Salve a tutti , sono alle prese con questo esercizio: "Definire una lista avente un campo intero e uno float. Inserire in testa gli interi presi da un file e inizializzare 0.0 il campo float. Con una funzione inserire nel campo float la media tra l'intero corrente e quello del nodo successivo".
Il mio problema sta nell'ultimo punto ovvero nel modificare il campo float. Potete spiegarmi cosa sbaglio?
Qui tutto il codice completo:
struct elemento{
int inf;
float inf2;
struct elemento *next;
};
struct elemento *ins_testa(struct elemento *p);
void stampa(struct elemento *p);
struct elemento *media(struct elemento *p);
int main(){
struct elemento *p=NULL;
p=ins_testa(p);
stampa(p);
p=media(p);
stampa(p);
system("pause");
return 0;
}
struct elemento *ins_testa(struct elemento *p){
struct elemento *aus;
int num;
FILE *fp;
fp=fopen("Interi.txt", "r");
if(fp==NULL){
perror("Errore in apertura da FILE!\n");
exit(1);
}
while(fscanf(fp, "%d", &num)>0){
aus=malloc(sizeof(struct elemento));
aus->inf=num;
aus->inf2=0.0;
aus->next=p;
p=aus;
}
return p;
}
void stampa(struct elemento *p){
if(p!=NULL){
printf(" %d-%.1f -->", p->inf, p->inf2);
stampa(p->next);
}
else{
printf("NULL\n\n");
}
}
struct elemento *media(struct elemento *p){
int somma=0;
float media=0.0;
while(p!=NULL){
somma=p->inf+p->next->inf;
media=somma/2;
p->inf2=media;
p=p->next;
}
return p;
}