#include #include typedef struct node{ double element; struct node *next; }node_t; node_t *head = NULL; node_t *add_first(double value, node_t *l){ node_t *newNode = (node_t*)malloc(sizeof(node_t)); newNode->element =value; newNode->next=l; return newNode; } int getSize(node_t *l){ int size=0; for(node_t *i=head; i!=NULL; i=i->next){ ++size; } return size; } double getSum(node_t *l){ double value =0; for(node_t *i=head; i!=NULL; i=i->next){ value += i->element; } return value; } double pop() { return head->element; } node_t *remove_first(node_t *l){ node_t *newNode = l->next; free(l); return newNode; } int main() { double input; double durchschnitt; double temp; while(input > 0){ scanf("%lf", &input); head = add_first(input,head); } //remove negative numbers head = remove_first(head); durchschnitt = getSum(head)/getSize(head); for(node_t *i=head; i!=NULL; i=i->next){ if(i->element < durchschnitt){ temp += i->element; } } printf("%.2f", temp); for(node_t *i=head; i!=NULL; i=i->next){ head=remove_first(head); } return 0; }