Я пытаюсь определить количество цифр в целых числах в 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, но это указано в задаче, это должен быть тот.
Вы написали
И ни один из них не работает в моем случае, например, «000101», он имеет 6 цифр, но он говорит 4 или 3. Любая помощь?
если целое число было 000101, тогда первые 3 нуля будут удалены, оно станет 101.
Если это была строка, вы просто считаете, сколько букв в строке.
Кажется, вы хотите представить двоичный файл, я бы использовал битовый массив для этого
Редактировать: Хорошо, это не двоичный файл, это дата, которая должна быть сохранена в строку, чтобы избежать этой ошибки Y2K.
int count = strlen("000101");
Других решений пока нет …