Количество цифр
Я программирую функцию в Моцарт-Оз, которая возвращает зеркало числа, например
Зеркало (1234) вернет 4321
Так или иначе, у меня есть идея, как это сделать, но я застрял, потому что мне нужна встроенная функция, которая возвращает количество цифр (возвращает целое число) целого числа.
Я попытался использовать функцию {Length X}, но я понятия не имею, что она возвращает...
Вот мой код (который не работает), чтобы понять контекст моей проблемы.
declare
fun {Mirror Int Acc}
if Int==0 then Acc
else {Mirror (Int div 10) (Int mod 10)*(10^({Length Int}-1))+Acc}end
end
{Browse {Mirror 1234 0}}
2 ответа
Решение
Я бы сделал это:
declare
fun{Mirror X Y}
if X==0 then Y
else {Mirror (X div 10) (X mod 10)+Y*10}
end
end
{Browse {Mirror 1234 0}}
или, если вы хотите только один аргумент:
declare
fun{Mirror X}
fun{Aux X Y}
if X==0 then Y
else {Aux (X div 10) (X mod 10)+Y*10}
end
end
in
{Aux X 0}
end
{Browse {Mirror 1234}}
Вы можете найти количество цифр, преобразовав строку и взяв ее длину:
NumDigits = {Length {Value.toVirtualString Int 10 10}}
Кстати, ^
Оператор имеет другое значение Оз. Вы, вероятно, хотите Pow
функция.