forked from TheAlgorithms/C-Plus-Plus
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Finding no. of digits in a Number (TheAlgorithms#1497)
* Finding no. of digits in a Number * Initialize n * Initialize n as int * Changes done * Changes done with codes by adding more comments * Changes done with codes by adding name as md * Modified comments * add void * remove void & update comments * Set some changes to pass Awesome CI Workflow * add return 0 & file name in lower case * Changes done.. * Update finding_number_of_Digits_in_a_Number.cpp * Update finding_number_of_Digits_in_a_Number.cpp * Update finding_number_of_Digits_in_a_Number.cpp * formatting filenames 0ec45e3 * updating DIRECTORY.md * clang-format and clang-tidy fixes for 0ec45e3 * clang-format and clang-tidy fixes for 9c0a437 * updating DIRECTORY.md * Wrote test, needs review * [fix/docs]: Fix tests/code and add documentation Co-authored-by: David Leal <[email protected]> Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
- Loading branch information
1 parent
289ebc5
commit 341ed50
Showing
4 changed files
with
75 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
/** | ||
* @author [aminos 🇮🇳](https://github.com/amino19) | ||
* @file | ||
* | ||
* @brief [Program to count digits | ||
* in an | ||
* integer](https://www.geeksforgeeks.org/program-count-digits-integer-3-different-methods) | ||
* @details It is a very basic math of finding number of digits in a given | ||
* number i.e, we can use it by inputting values whether it can be a | ||
* positive/negative value, let's say: an integer. There is also a second | ||
* method: by using "K = floor(log10(N) + 1)", but it's only applicable for | ||
* numbers (not integers). | ||
* For more details, refer to the | ||
* [Algorithms-Explanation](https://github.com/TheAlgorithms/Algorithms-Explanation/blob/master/en/Basic%20Math/Finding | ||
* the number of digits in a number.md) repository. | ||
*/ | ||
|
||
#include <cassert> /// for assert | ||
#include <iostream> /// for IO operations | ||
|
||
/** | ||
* @brief The main function that checks | ||
* the number of digits in a number. | ||
* @param n the number to check its digits | ||
* @returns the digits count | ||
*/ | ||
uint64_t finding_number_of_digits_in_a_number(uint64_t n) { | ||
uint64_t count = 0; ///< the variable used for the digits count | ||
|
||
// iterate until `n` becomes 0 | ||
// remove last digit from `n` in each iteration | ||
// increase `count` by 1 in each iteration | ||
while (n != 0) { | ||
// we can also use `n = n / 10` | ||
n /= 10; | ||
// each time the loop is running, `count` will be incremented by 1. | ||
++count; | ||
} | ||
|
||
return count; | ||
} | ||
|
||
/** | ||
* @brief Self-test implementations | ||
* @returns void | ||
*/ | ||
static void test() { | ||
assert(finding_number_of_digits_in_a_number(5492) == 4); | ||
assert(finding_number_of_digits_in_a_number(-0) == 0); | ||
assert(finding_number_of_digits_in_a_number(10000) == 5); | ||
assert(finding_number_of_digits_in_a_number(9) == 1); | ||
assert(finding_number_of_digits_in_a_number(100000) == 6); | ||
assert(finding_number_of_digits_in_a_number(13) == 2); | ||
assert(finding_number_of_digits_in_a_number(564) == 3); | ||
|
||
std::cout << "All tests have successfully passed!\n"; | ||
} | ||
|
||
/** | ||
* @brief Main function | ||
* @returns 0 on exit | ||
*/ | ||
int main() { | ||
test(); // run self-test implementations | ||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters