Подскажите, плиз.

s_S_s

Турист
Регистрация
15 Июл 2006
Сообщения
42
Реакции
0
Credits
66
Через какой оператор писать: Дано натуральное число n. Подсчитать сколько чисел в этом числе?
 

XPEHOMETP

Местный
Регистрация
21 Окт 2005
Сообщения
244
Реакции
62
Credits
0
Не понял. Это примерно то же, что спрашивать: "Есть слово, сколько в нем слов?" Если вопрос в том, сколько цифр в натуральном числе, а запись имеется в виду десятичная, то надо взять от этого числа десятичный логарифм и округлить до ближайшего большего целого числа (функцией ceiling, есть, к примеру, во многих диалектах BASIC или в Fortran).
 

s_S_s

Турист
Регистрация
15 Июл 2006
Сообщения
42
Реакции
0
Credits
66
Сдесь както задача поставленна, может в ней имеется в веду подсчитать сколько знаков?
 

s_S_s

Турист
Регистрация
15 Июл 2006
Сообщения
42
Реакции
0
Credits
66
Не понял. Это примерно то же, что спрашивать: "Есть слово, сколько в нем слов?" Если вопрос в том, сколько цифр в натуральном числе, а запись имеется в виду десятичная, то надо взять от этого числа десятичный логарифм и округлить до ближайшего большего целого числа (функцией ceiling, есть, к примеру, во многих диалектах BASIC или в Fortran).

Как с помощью ceiling? Результат я думаю должен быть: Если 5 то 1 одно число, если 13 то 2 два числа, если 211 то 3 три, и так далее.
 

s_S_s

Турист
Регистрация
15 Июл 2006
Сообщения
42
Реакции
0
Credits
66
ну ктонибудь поможет?
 

nhkudav

Местный
Регистрация
11 Янв 2004
Сообщения
87
Реакции
13
Credits
140
проверь равно 0 или нет
в цикле дели на 10 пока не станет меньше 1 и попутно увеличивай счетчик на 1 в конце к счетчику прибавь один и смотри результат.

Другого способа не вижу.
 

s_S_s

Турист
Регистрация
15 Июл 2006
Сообщения
42
Реакции
0
Credits
66
проверь равно 0 или нет
в цикле дели на 10 пока не станет меньше 1 и попутно увеличивай счетчик на 1 в конце к счетчику прибавь один и смотри результат.

Другого способа не вижу.

Что то у меня не получается.....
 

ZeVS

Специалист
Местный
Регистрация
2 Окт 2005
Сообщения
220
Реакции
77
Credits
10
:(

Надо проверять не на равенство нулю.

i := 0;
while abs(n) > 1 do
begin
inc(i);
n := n/10;
end;

(n типа real или double).
 

ZeVS

Специалист
Местный
Регистрация
2 Окт 2005
Сообщения
220
Реакции
77
Credits
10
Товарисчи, а логарифм по основанию 10 взять?

На Delphi

i := floor(log10(n)) + 1;

На Pascal

i := int(ln(n)/ln(10)) + 1;