mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-03-30 16:51:57 +08:00
feat: Finding no. of digits in a Number (#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 filenames0ec45e33* updating DIRECTORY.md * clang-format and clang-tidy fixes for0ec45e33* clang-format and clang-tidy fixes for9c0a437e* updating DIRECTORY.md * Wrote test, needs review * [fix/docs]: Fix tests/code and add documentation Co-authored-by: David Leal <halfpacho@gmail.com> Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
This commit is contained in:
66
math/finding_number_of_digits_in_a_number.cpp
Normal file
66
math/finding_number_of_digits_in_a_number.cpp
Normal file
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user