Skip to content

Commit 76edb15

Browse files
committed
"Updated digit separation code: added comments and docstrings, changed data types to std::int64_t, and reformatted code."
1 parent 011c4e2 commit 76edb15

File tree

1 file changed

+35
-20
lines changed

1 file changed

+35
-20
lines changed

greedy_algorithms/digit_separation.cpp

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,24 @@
1-
#include <algorithm>
2-
#include <cmath>
3-
#include <iostream>
4-
#include <vector>
5-
#include <cassert>
1+
/**
2+
* @file digit_separation.cpp
3+
* @brief This file contains the DigitSeparation class for separating digits of large numbers.
4+
* https://www.log2base2.com/c-examples/loop/split-a-number-into-digits-in-c.html
5+
* @details
6+
* @author [Muhammad Junaid Khalid](https://github.com/mjk22071998)
7+
* @see related_file.cpp, another_file.cpp
8+
*/
9+
10+
#include <algorithm> /// For reveresing the vector
11+
#include <cmath> /// For abs() function
12+
#include <iostream> /// For input/output operations
13+
#include <vector> /// For std::vector to store separated digits
14+
#include <cassert> /// For assert() function to check for errors
15+
#include <cstdint> /// For int64_t data type to handle large numbers
616

17+
18+
/**
19+
* @namespace
20+
* @brief Greedy Algorithms
21+
*/
722
namespace greedy_algorithms{
823

924
/**
@@ -24,8 +39,8 @@ namespace greedy_algorithms{
2439
* @param largeNumber The large number to separate digits from.
2540
* @return A vector of digits in reverse order.
2641
*/
27-
std::vector<long long> digitSeparationReverseOrder(
28-
long long largeNumber) const;
42+
std::vector<std::int64_t> digitSeparationReverseOrder(
43+
std::int64_t largeNumber) const;
2944

3045
/**
3146
* @brief Separates the digits of a large positive number into a vector in
@@ -34,8 +49,8 @@ namespace greedy_algorithms{
3449
* @param largeNumber The large number to separate digits from.
3550
* @return A vector of digits in forward order.
3651
*/
37-
std::vector<long long> digitSeparationForwardOrder(
38-
long long largeNumber) const;
52+
std::vector<std::int64_t> digitSeparationForwardOrder(
53+
std::int64_t largeNumber) const;
3954
};
4055

4156
/**
@@ -44,9 +59,9 @@ namespace greedy_algorithms{
4459
* @param largeNumber The large number to separate digits from.
4560
* @return A vector of digits in reverse order.
4661
*/
47-
std::vector<long long> DigitSeparation::digitSeparationReverseOrder(
48-
long long largeNumber) const {
49-
std::vector<long long> result;
62+
std::vector<std::int64_t> DigitSeparation::digitSeparationReverseOrder(
63+
std::int64_t largeNumber) const {
64+
std::vector<std::int64_t> result;
5065
if (largeNumber != 0) {
5166
while (largeNumber != 0) {
5267
result.push_back(std::abs(largeNumber % 10));
@@ -64,9 +79,9 @@ namespace greedy_algorithms{
6479
* @param largeNumber The large number to separate digits from.
6580
* @return A vector of digits in forward order.
6681
*/
67-
std::vector<long long> DigitSeparation::digitSeparationForwardOrder(
68-
long long largeNumber) const {
69-
std::vector<long long> result = digitSeparationReverseOrder(largeNumber);
82+
std::vector<std::int64_t> DigitSeparation::digitSeparationForwardOrder(
83+
std::int64_t largeNumber) const {
84+
std::vector<std::int64_t> result = digitSeparationReverseOrder(largeNumber);
7085
std::reverse(result.begin(), result.end());
7186
return result;
7287
}
@@ -76,16 +91,16 @@ int main() {
7691
greedy_algorithms::DigitSeparation ds;
7792

7893
// Test case: Positive number
79-
long long number = 1234567890;
80-
std::vector<long long> expectedReverse = {0, 9, 8, 7, 6, 5, 4, 3, 2, 1};
81-
std::vector<long long> expectedForward = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
94+
std::int64_t number = 1234567890;
95+
std::vector<std::int64_t> expectedReverse = {0, 9, 8, 7, 6, 5, 4, 3, 2, 1};
96+
std::vector<std::int64_t> expectedForward = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
8297

8398
// Testing reverse order
84-
std::vector<long long> reverseOrder = ds.digitSeparationReverseOrder(number);
99+
std::vector<std::int64_t> reverseOrder = ds.digitSeparationReverseOrder(number);
85100
assert(reverseOrder == expectedReverse);
86101

87102
// Testing forward order
88-
std::vector<long long> forwardOrder = ds.digitSeparationForwardOrder(number);
103+
std::vector<std::int64_t> forwardOrder = ds.digitSeparationForwardOrder(number);
89104
assert(forwardOrder == expectedForward);
90105

91106
// Test case: Single digit number

0 commit comments

Comments
 (0)