xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/gdb.base/average.c (revision b725ae7711052a2233e31a66fefb8a752c388d7a)
1*b725ae77Skettenis /* This is a sample program for the HP WDB debugger. */
2*b725ae77Skettenis 
3*b725ae77Skettenis #include <stdio.h>
4*b725ae77Skettenis #include <stdlib.h>
5*b725ae77Skettenis 
6*b725ae77Skettenis #ifdef PROTOTYPES
7*b725ae77Skettenis extern int sum(int *, int, int);
8*b725ae77Skettenis #else
9*b725ae77Skettenis extern int sum();
10*b725ae77Skettenis #endif
11*b725ae77Skettenis 
12*b725ae77Skettenis #define num   10
13*b725ae77Skettenis 
14*b725ae77Skettenis static int my_list[num] = {3,4,2,0,2,1,8,3,6,7};
15*b725ae77Skettenis 
16*b725ae77Skettenis #ifdef PROTOTYPES
print_average(int * list,int low,int high)17*b725ae77Skettenis void print_average(int *list, int low, int high)
18*b725ae77Skettenis #else
19*b725ae77Skettenis void print_average(list, low, high)
20*b725ae77Skettenis int *list, low, high;
21*b725ae77Skettenis #endif
22*b725ae77Skettenis     {
23*b725ae77Skettenis         int total = 0, num_elements = 0, average = 0;
24*b725ae77Skettenis         total = sum(list, low, high);
25*b725ae77Skettenis         num_elements = high - low;  /* note this is an off-by-one bug */
26*b725ae77Skettenis 
27*b725ae77Skettenis         average = total / num_elements;
28*b725ae77Skettenis         printf("%10.d\n", average);
29*b725ae77Skettenis     }
30*b725ae77Skettenis 
31*b725ae77Skettenis #ifdef PROTOTYPES
main(void)32*b725ae77Skettenis int main(void)
33*b725ae77Skettenis #else
34*b725ae77Skettenis main ()
35*b725ae77Skettenis #endif
36*b725ae77Skettenis {
37*b725ae77Skettenis     char c;
38*b725ae77Skettenis     int first = 0, last = 0;
39*b725ae77Skettenis     last = num-1;
40*b725ae77Skettenis 
41*b725ae77Skettenis     /* Try two test cases. */
42*b725ae77Skettenis     print_average (my_list, first, last);
43*b725ae77Skettenis     print_average (my_list, first, last - 3);
44*b725ae77Skettenis 
45*b725ae77Skettenis     exit(0);
46*b725ae77Skettenis }
47