Prog1 26/2/11
Leggere una sequenza di n numeri, costruire una lista e stamparla.
Calcolare e stampare la media degli n numeri. Costruire e stampare una seconda lista composta dai soli nodi maggiori della media.
IMPORTANTE: organizzare il programma in funzioni, non utilizzare array e liste ausiliarie, non introdurre variabili globali.
Esempio.
Se la lista di partenza è:
10 --> 8 --> 3 --> 11 --> NULL
la media è 32/4 = 8 per cui viene costruita e stampata la lista:
10 --> 11 --> NULL
#include <stdlib.h>
#include <stdio.h>
struct nodo *crealista();
void printlista(struct nodo *p);
float media(struct nodo *p);
struct nodo { int dato;
struct nodo *next; };
main() {
struct nodo *p, *q, *r, *s;
float m;
p = crealista();
printlista(p);
m = media(p);
printf ("media = %f\n\n", m);
r = NULL;
q = p;
while (q != NULL) { if (q->dato > m) {
s = (struct nodo *)malloc(sizeof(struct nodo));
s->dato = q->dato;
s->next = r;
r = s;
}
q = q->next;
}
printlista(r);
system ("pause");
return(0);
}
float media(struct nodo *p) {
float s=0.0;
int n = 0;
while (p != NULL) { s = s + p->dato;
n = n + 1;
p = p->next;
}
return(s/n);
}