2015-01-29 4 views

ответ

2

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

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

0

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

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

0

Либо

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 

журнал дает:

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

Также лог х = х журнал/журнал 10.

1

Увидев, что вы используете 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 
+0

Благодарим за ответ! Но не должно быть '(X <0) +' вместо '(X> 0) +'? – user3932000

+0

@ user3932000 Полностью правильно, спасибо + исправлено. – Timtech