예제 #1
0
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);
}
예제 #2
0
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));

}