| Index: third_party/lcov/example/methods/iterate.c
|
| ===================================================================
|
| --- third_party/lcov/example/methods/iterate.c (revision 0)
|
| +++ third_party/lcov/example/methods/iterate.c (revision 0)
|
| @@ -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;
|
| +}
|
|
|