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
6
16
17
+
18
+ /* *
19
+ * @namespace
20
+ * @brief Greedy Algorithms
21
+ */
7
22
namespace greedy_algorithms {
8
23
9
24
/* *
@@ -24,8 +39,8 @@ namespace greedy_algorithms{
24
39
* @param largeNumber The large number to separate digits from.
25
40
* @return A vector of digits in reverse order.
26
41
*/
27
- std::vector<long long > digitSeparationReverseOrder (
28
- long long largeNumber) const ;
42
+ std::vector<std:: int64_t > digitSeparationReverseOrder (
43
+ std:: int64_t largeNumber) const ;
29
44
30
45
/* *
31
46
* @brief Separates the digits of a large positive number into a vector in
@@ -34,8 +49,8 @@ namespace greedy_algorithms{
34
49
* @param largeNumber The large number to separate digits from.
35
50
* @return A vector of digits in forward order.
36
51
*/
37
- std::vector<long long > digitSeparationForwardOrder (
38
- long long largeNumber) const ;
52
+ std::vector<std:: int64_t > digitSeparationForwardOrder (
53
+ std:: int64_t largeNumber) const ;
39
54
};
40
55
41
56
/* *
@@ -44,9 +59,9 @@ namespace greedy_algorithms{
44
59
* @param largeNumber The large number to separate digits from.
45
60
* @return A vector of digits in reverse order.
46
61
*/
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;
50
65
if (largeNumber != 0 ) {
51
66
while (largeNumber != 0 ) {
52
67
result.push_back (std::abs (largeNumber % 10 ));
@@ -64,9 +79,9 @@ namespace greedy_algorithms{
64
79
* @param largeNumber The large number to separate digits from.
65
80
* @return A vector of digits in forward order.
66
81
*/
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);
70
85
std::reverse (result.begin (), result.end ());
71
86
return result;
72
87
}
@@ -76,16 +91,16 @@ int main() {
76
91
greedy_algorithms::DigitSeparation ds;
77
92
78
93
// 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 };
82
97
83
98
// Testing reverse order
84
- std::vector<long long > reverseOrder = ds.digitSeparationReverseOrder (number);
99
+ std::vector<std:: int64_t > reverseOrder = ds.digitSeparationReverseOrder (number);
85
100
assert (reverseOrder == expectedReverse);
86
101
87
102
// Testing forward order
88
- std::vector<long long > forwardOrder = ds.digitSeparationForwardOrder (number);
103
+ std::vector<std:: int64_t > forwardOrder = ds.digitSeparationForwardOrder (number);
89
104
assert (forwardOrder == expectedForward);
90
105
91
106
// Test case: Single digit number
0 commit comments