Il tuo programma è un gran casino (scusa il francesismo). Mancano interi pezzi e ci sono doppioni e ripetizioni a iosa. Perché dici "più lunga" e nell'enunciato parli di valore medio?
Bastano una funzione, una struttura tipo lista, 4 variabili ed un if:
#include <stdio.h>
#include <stdlib.h>
typedef struct list {
float value;
struct list *next_ptr;
} Lista;
float calcola_media(Lista *);
int init(Lista *);
int main(int argc, char **argv){
Lista * lista1 = NULL;
Lista * lista2 = NULL;
float media1, media2;
// -----------------------------------------------
// TODO: Inizializzo le due liste con i valori
// Non è specificato come generi i valori, ma supponiamo
// di poter usare un metodo random che ad ogni chiamata
// ti genera una lista dinamica compresa tra 1 e N elementi.
// -----------------------------------------------
int res = init(lista1);
// se inizializzo una lista, devo ritornare 0 o 1 a seconda se ci sono stati o no problemi
// durante la creazione della lista. Se ci sono stati problemi esco dal programma.
if (res)
return 1; // Puoi mettere anche un messaggio d'errore prima di return
res = init(lista2);
if (res)
return 1; // Puoi mettere anche un messaggio d'errore prima di return
// Calcolo del valor medio
media1 = calcola_media(lista1);
media2 = calcola_media(lista2);
if (media1 > media2) {
printf(".....");
}else{
printf(".....");
}
return 0;
}
int init(Lista *ptr){
// Adesso tocca a te
}
float calcola_media(Lista *ptr){
float sum=0;
int numero_elementi=0;
while (ptr != NULL){
sum=sum+ptr->value;
numero_elementi++;
ptr=ptr->next_ptr;
}
return sum/numero_elementi;
}