Как посчитать цифры номера?

Я делаю программу на своем TI-84, и мне нужен способ подсчета цифр числа.

Как бы я поступил так?

4 ответа

Решение

Прошло много времени с тех пор, как я коснулся TI-Basic, однако я знаю, что существует математическое средство подсчета цифр числа. Поскольку каждое место кратно 10, вы должны просто иметь возможность использовать (лог 10 базы вашего номера) плюс один. Это предполагает, что вы используете положительные целые числа.

Альтернативное и более общее решение состоит в том, чтобы получить длину числа, преобразованного в строку. Похоже, здесь есть некоторая документация: http://tibasicdev.wikidot.com/number-to-string2

Поскольку вы используете TI-84, ответы 68k/NSpire не дадут вам конкретного ответа. Достаточно просто использовать 1+int(log(X)) для натуральных чисел, но что, если вы хотите также поддерживать ненулевые целые числа? Эта программа (всего 9 байт) должна сделать свое дело:

Prompt X
1+int(log(abs(X

Если вы хотите считать отрицательный символ как цифру, просто добавьте (X<0)+ к началу второй строки.


У меня также есть совершенно другое решение... для любых действительных чисел, 15 символов точности (включая десятичную точку) и с отрицательным количеством символов в качестве цифры, вы можете использовать утилиту Number to String, например, (10 байт):

Prompt X:X
prgmS
length(Ans

Или

f(x)
:Func
:   If x = 0
:       Return 1
    0 → n
:   While x >= 1
        x / 10 → x   (integer division would be ideal)
        n + 1 → n
:   End
:   Return n
:End Func

Или лучше

f(x) =
    if x == 0 then return 1
    return int(10log(x)) + 1

Лог 10 дает:

1-9      0.~
10-99    1.~
100-999  2.~

Также 10 log x = log x / log 10.

Предполагая, что это положительное целое число, вы можете вычесть возрастающие степени 10 из числа. Если результат меньше 0, то последним вычитаемым значением является количество цифр.

В качестве примера рассмотрим число 643. Первое вычитание 10 - дает 633, что положительно. Следующая попытка 100 - дает 543, что положительно. Следующая попытка 1000 - дает -357. Следовательно, количество цифр равно 3 (задается 10^3).

Другие вопросы по тегам