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

s_S_s

Member
Joined
Jul 15, 2006
Messages
42
Reaction score
0
Age
41
Location
Астана
Через какой оператор писать: Дано натуральное число n. Подсчитать сколько чисел в этом числе?
 

XPEHOMETP

Member
Joined
Oct 21, 2005
Messages
245
Reaction score
58
Age
62
Location
С.-Петербург
Не понял. Это примерно то же, что спрашивать: "Есть слово, сколько в нем слов?" Если вопрос в том, сколько цифр в натуральном числе, а запись имеется в виду десятичная, то надо взять от этого числа десятичный логарифм и округлить до ближайшего большего целого числа (функцией ceiling, есть, к примеру, во многих диалектах BASIC или в Fortran).
 

s_S_s

Member
Joined
Jul 15, 2006
Messages
42
Reaction score
0
Age
41
Location
Астана
Сдесь както задача поставленна, может в ней имеется в веду подсчитать сколько знаков?
 

s_S_s

Member
Joined
Jul 15, 2006
Messages
42
Reaction score
0
Age
41
Location
Астана
Не понял. Это примерно то же, что спрашивать: "Есть слово, сколько в нем слов?" Если вопрос в том, сколько цифр в натуральном числе, а запись имеется в виду десятичная, то надо взять от этого числа десятичный логарифм и округлить до ближайшего большего целого числа (функцией ceiling, есть, к примеру, во многих диалектах BASIC или в Fortran).

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

nhkudav

Member
Joined
Jan 11, 2004
Messages
87
Reaction score
13
Age
43
Location
Находка
проверь равно 0 или нет
в цикле дели на 10 пока не станет меньше 1 и попутно увеличивай счетчик на 1 в конце к счетчику прибавь один и смотри результат.

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

s_S_s

Member
Joined
Jul 15, 2006
Messages
42
Reaction score
0
Age
41
Location
Астана
проверь равно 0 или нет
в цикле дели на 10 пока не станет меньше 1 и попутно увеличивай счетчик на 1 в конце к счетчику прибавь один и смотри результат.

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

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

Zevs

Member
Joined
Oct 2, 2005
Messages
220
Reaction score
77
Age
21
:(

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

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

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

Zevs

Member
Joined
Oct 2, 2005
Messages
220
Reaction score
77
Age
21
Товарисчи, а логарифм по основанию 10 взять?

На Delphi

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

На Pascal

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