diff --git a/math/sum_of_digits.cpp b/math/sum_of_digits.cpp new file mode 100644 index 000000000..d5a705c48 --- /dev/null +++ b/math/sum_of_digits.cpp @@ -0,0 +1,72 @@ +/** + * Copyright 2020 @author iamnambiar + * + * @file + * \brief A C++ Program to find the Sum of Digits of input integer. + */ +#include +#include + +/** + * Function to find the sum of the digits of an integer. + * @param num The integer. + * @return Sum of the digits of the integer. + * + * \detail + * First the algorithm check whether the num is negative or positive, + * if it is negative, then we neglect the negative sign. + * Next, the algorithm extract the last digit of num by dividing by 10 + * and extracting the remainder and this is added to the sum. + * The number is then divided by 10 to remove the last digit. + * This loop continues until num becomes 0. + */ +int sum_of_digits(int num) { + // If num is negative then negative sign is neglected. + if (num < 0) { + num = -1 * num; + } + int sum = 0; + while (num > 0) { + sum = sum + (num % 10); + num = num / 10; + } + return sum; +} + +/** + * Function for testing the sum_of_digits() function with a + * first test case of 119765 and assert statement. + */ +void test1() { + int test_case_1 = sum_of_digits(119765); + assert(test_case_1 == 29); +} + +/** + * Function for testing the sum_of_digits() function with a + * second test case of -12256 and assert statement. + */ +void test2() { + int test_case_2 = sum_of_digits(-12256); + assert(test_case_2 == 16); +} + +/** + * Function for testing the sum_of_digits() with + * all the test cases. + */ +void test() { + // First test. + test1(); + // Second test. + test2(); +} + +/** + * Main Function +*/ +int main() { + test(); + std::cout << "Success." << std::endl; + return 0; +}