| /* |
| * 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; |
| } |