OLD | NEW |
| (Empty) |
1 /* | |
2 * methods/iterate.c | |
3 * | |
4 * Calculate the sum of a given range of integer numbers. | |
5 * | |
6 * This particular method of implementation works by way of brute force, | |
7 * i.e. it iterates over the entire range while adding the numbers to finally | |
8 * get the total sum. As a positive side effect, we're able to easily detect | |
9 * overflows, i.e. situations in which the sum would exceed the capacity | |
10 * of an integer variable. | |
11 * | |
12 */ | |
13 | |
14 #include <stdio.h> | |
15 #include <stdlib.h> | |
16 #include "iterate.h" | |
17 | |
18 | |
19 int iterate_get_sum (int min, int max) | |
20 { | |
21 int i, total; | |
22 | |
23 total = 0; | |
24 | |
25 /* This is where we loop over each number in the range, including | |
26 both the minimum and the maximum number. */ | |
27 | |
28 for (i = min; i <= max; i++) | |
29 { | |
30 /* We can detect an overflow by checking whether the new | |
31 sum would become negative. */ | |
32 | |
33 if (total + i < total) | |
34 { | |
35 printf ("Error: sum too large!\n"); | |
36 exit (1); | |
37 } | |
38 | |
39 /* Everything seems to fit into an int, so continue adding. */ | |
40 | |
41 total += i; | |
42 } | |
43 | |
44 return total; | |
45 } | |
OLD | NEW |