void engine_average(void) /* Computes average distance and angle differences */ { Sample *sample; int i; num_disqualified = 0; if (!engines[ENGINE_AVGDIST].range && !engines[ENGINE_AVGANGLE].range) return; /* Average angle engine needs to be discounted when the input contains segments too short to produce meaningful angles */ engines[ENGINE_AVGANGLE].scale = 0; for (i = 0; i < input->len; i++) if (input->strokes[i]->spread >= DOT_SPREAD) engines[ENGINE_AVGANGLE].scale++; engines[ENGINE_AVGANGLE].scale = engines[ENGINE_AVGANGLE].scale * ENGINE_SCALE / input->len; /* Run the averaging engine on every sample */ sampleiter_reset(); while ((sample = sampleiter_next())) if (sample->ch) sample_average(sample); }
void main() { sample S; int i = 0; sample_init(&S); while (i < 10) { sample_push(&S, i); i++; } for(i = 0; i < SAMPLE_SIZE; i++) { printf("%d\n",S.data[i]); } printf("Average is: %d\n", sample_average(&S)); }