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; |
+} |