| 
| 
 | Вопрос # 3 615/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!Мне нужна консультация по данной программе
 
|  |   Вопрос задал: Виноградов Алексей/Prog_man (статус: Посетитель)Вопрос отправлен: 5 января 2010, 00:27
 Состояние вопроса: открыт, ответов: 2.
 |  Ответ #1. Отвечает эксперт: vlsavkin Здравствуйте, Виноградов Алексей/Prog_man!program Project2;
 
 {$APPTYPE CONSOLE}
 
 uses
 SysUtils, math;
 
 var i,s:integer;
 begin
 readln(s);
 s:=s*sign(s);
 i:=0;
 while s>0 do
 begin
 s:=s div 10;
 i:=i+1;
 end;
 writeln(i);
 readln;
 end.
 
|  | Ответ отправил: vlsavkin (статус: 2-ой класс)Время отправки: 5 января 2010, 11:00
 
 |  Ответ #2. Отвечает эксперт: Паровоз Здравствуйте, Виноградов Алексей/Prog_man!
 Можно поступить проще. Число цифр положительного числа на 1 больше целой части его десятичного логарифма. Поэтому можно сделать так:
 
 uses Math;
var
  x:Integer;//число
  n:Integer;//количество десятичных цифр числа x
begin
  x:=StrToInt(Edit1.Text);
  n:=Trunc(Log10(Abs(x)))+1;
end; 
|  | Ответ отправил: Паровоз (статус: 10-ый класс)Время отправки: 5 января 2010, 12:24
 
 |  
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 5 января 2010, 12:37; участников в обсуждении: 1. 
|   | vlsavkin (статус: 2-ой класс), 5 января 2010, 12:37 [#1]:Единственное, что в обоих ответах неправильно обрабатываются случаи, когда исходное число 0, поэтому сразу: readln(n);
 writeln(length(inttostr(abs(n))));
 
  ) |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |