diff options
Diffstat (limited to 'third_party/lcov-1.9/example/methods/iterate.c')
-rw-r--r-- | third_party/lcov-1.9/example/methods/iterate.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/third_party/lcov-1.9/example/methods/iterate.c b/third_party/lcov-1.9/example/methods/iterate.c new file mode 100644 index 0000000..023d180 --- /dev/null +++ b/third_party/lcov-1.9/example/methods/iterate.c @@ -0,0 +1,45 @@ +/* + * methods/iterate.c + * + * Calculate the sum of a given range of integer numbers. + * + * This particular method of implementation works by way of brute force, + * i.e. it iterates over the entire range while adding the numbers to finally + * get the total sum. As a positive side effect, we're able to easily detect + * overflows, i.e. situations in which the sum would exceed the capacity + * of an integer variable. + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include "iterate.h" + + +int iterate_get_sum (int min, int max) +{ + int i, total; + + total = 0; + + /* This is where we loop over each number in the range, including + both the minimum and the maximum number. */ + + for (i = min; i <= max; i++) + { + /* We can detect an overflow by checking whether the new + sum would become negative. */ + + if (total + i < total) + { + printf ("Error: sum too large!\n"); + exit (1); + } + + /* Everything seems to fit into an int, so continue adding. */ + + total += i; + } + + return total; +} |