From 76edb15be4b63d371faad72101be20347df66c92 Mon Sep 17 00:00:00 2001 From: mjk22071998 Date: Sat, 5 Oct 2024 12:32:23 +0500 Subject: [PATCH] "Updated digit separation code: added comments and docstrings, changed data types to std::int64_t, and reformatted code." --- greedy_algorithms/digit_separation.cpp | 55 ++++++++++++++++---------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/greedy_algorithms/digit_separation.cpp b/greedy_algorithms/digit_separation.cpp index e3ac00918..3d2476b03 100644 --- a/greedy_algorithms/digit_separation.cpp +++ b/greedy_algorithms/digit_separation.cpp @@ -1,9 +1,24 @@ -#include -#include -#include -#include -#include +/** + * @file digit_separation.cpp + * @brief This file contains the DigitSeparation class for separating digits of large numbers. + * https://www.log2base2.com/c-examples/loop/split-a-number-into-digits-in-c.html + * @details + * @author [Muhammad Junaid Khalid](https://github.com/mjk22071998) + * @see related_file.cpp, another_file.cpp + */ +#include /// For reveresing the vector +#include /// For abs() function +#include /// For input/output operations +#include /// For std::vector to store separated digits +#include /// For assert() function to check for errors +#include /// For int64_t data type to handle large numbers + + +/** + * @namespace + * @brief Greedy Algorithms + */ namespace greedy_algorithms{ /** @@ -24,8 +39,8 @@ namespace greedy_algorithms{ * @param largeNumber The large number to separate digits from. * @return A vector of digits in reverse order. */ - std::vector digitSeparationReverseOrder( - long long largeNumber) const; + std::vector digitSeparationReverseOrder( + std::int64_t largeNumber) const; /** * @brief Separates the digits of a large positive number into a vector in @@ -34,8 +49,8 @@ namespace greedy_algorithms{ * @param largeNumber The large number to separate digits from. * @return A vector of digits in forward order. */ - std::vector digitSeparationForwardOrder( - long long largeNumber) const; + std::vector digitSeparationForwardOrder( + std::int64_t largeNumber) const; }; /** @@ -44,9 +59,9 @@ namespace greedy_algorithms{ * @param largeNumber The large number to separate digits from. * @return A vector of digits in reverse order. */ - std::vector DigitSeparation::digitSeparationReverseOrder( - long long largeNumber) const { - std::vector result; + std::vector DigitSeparation::digitSeparationReverseOrder( + std::int64_t largeNumber) const { + std::vector result; if (largeNumber != 0) { while (largeNumber != 0) { result.push_back(std::abs(largeNumber % 10)); @@ -64,9 +79,9 @@ namespace greedy_algorithms{ * @param largeNumber The large number to separate digits from. * @return A vector of digits in forward order. */ - std::vector DigitSeparation::digitSeparationForwardOrder( - long long largeNumber) const { - std::vector result = digitSeparationReverseOrder(largeNumber); + std::vector DigitSeparation::digitSeparationForwardOrder( + std::int64_t largeNumber) const { + std::vector result = digitSeparationReverseOrder(largeNumber); std::reverse(result.begin(), result.end()); return result; } @@ -76,16 +91,16 @@ int main() { greedy_algorithms::DigitSeparation ds; // Test case: Positive number - long long number = 1234567890; - std::vector expectedReverse = {0, 9, 8, 7, 6, 5, 4, 3, 2, 1}; - std::vector expectedForward = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; + std::int64_t number = 1234567890; + std::vector expectedReverse = {0, 9, 8, 7, 6, 5, 4, 3, 2, 1}; + std::vector expectedForward = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; // Testing reverse order - std::vector reverseOrder = ds.digitSeparationReverseOrder(number); + std::vector reverseOrder = ds.digitSeparationReverseOrder(number); assert(reverseOrder == expectedReverse); // Testing forward order - std::vector forwardOrder = ds.digitSeparationForwardOrder(number); + std::vector forwardOrder = ds.digitSeparationForwardOrder(number); assert(forwardOrder == expectedForward); // Test case: Single digit number