Как определить количество цифр в целых числах в C ++?

Я пытаюсь определить количество цифр в целых числах в C ++, и до сих пор я пробовал следующие методы:

1.

unsigned GetNumberOfDigits (unsigned i)
{
return i > 0 ? (int) log10 ((double) i) + 1 : 1;
}

2.

int length_of_int(int input){
int length = 0;
while(input > 0){
length++;
input /= 10;
if(input == 0)
length++;
}
return length;
}

3.

int NumDigits(int x)
{
x = abs(x);
return (x < 10 ? 1 :
(x < 100 ? 2 :
(x < 1000 ? 3 :
(x < 10000 ? 4 :
(x < 100000 ? 5 :
(x < 1000000 ? 6 :
(x < 10000000 ? 7 :
(x < 100000000 ? 8 :
(x < 1000000000 ? 9 :
10)))))))));
}

И ни один из них не работает в моем случае, например, «000101», он имеет 6 цифр, но он говорит 4 или 3. Любая помощь?

Целью этого является проверка действительной даты в формате ГГММДД. Я знаю, что этот тип формата имеет ошибку Y2K, но это указано в задаче, это должен быть тот.

-2

Решение

Вы написали
И ни один из них не работает в моем случае, например, «000101», он имеет 6 цифр, но он говорит 4 или 3. Любая помощь?

если целое число было 000101, тогда первые 3 нуля будут удалены, оно станет 101.
Если это была строка, вы просто считаете, сколько букв в строке.
Кажется, вы хотите представить двоичный файл, я бы использовал битовый массив для этого
Редактировать: Хорошо, это не двоичный файл, это дата, которая должна быть сохранена в строку, чтобы избежать этой ошибки Y2K.

int count = strlen("000101");
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector