Вниз
Скачать: CL | DM;

Разложение числа на разрядные слагаемые   Найти похожие ветки 

← →
Виталий   (2009-07-23 07:11) [0]

Требуется разложить число на разрядные слагаемые, т.е

есть число 11258. нужно получить
11000+200+50+8

поделитесь идеями как это реализовать? у меня пока только одна мысль - сделать таблицу разрядов и по ней проверять. Может есть такой "велосипед"?


← →
Palladin ©   (2009-07-23 07:45) [1]

а почему не на 10000+1000+200+50+8 ? или 11000+75+125+30+20+5+3 ?
тебе на какие слагаемые то?


← →
Виталий   (2009-07-23 07:53) [2]

[1] да. прошу прощения.

10000+1000+200+58

число нужно разложить именно так.


← →
Palladin ©   (2009-07-23 08:02) [3]

выбирай на вкус

Function Pow10(n:Integer):Integer;
Var
i:Integer;
Begin
Result:=1;
For i:=1 to n Do Result:=Result*10;
End;

Procedure Decod2(n:Integer;r:TStrings);
Var
d:Integer;
p:Integer;
c:Integer;
t:Integer;
Begin
d:=1; p:=10; t:=0;
Repeat
 c:=(n mod p)-t;
 r.Add(IntToStr(c));
 t:=t+c;
 Inc(d);
 p:=Pow10(d);
Until (p div 10)>n;
End;

Procedure Decod1(n:Integer;r:TStrings);
Var
i:Integer;
s:String;
Begin
s:=IntToStr(n);
For i:=1 to Length(s) Do
 If s[i]<>"0" Then
  r.Add(IntToStr((Byte(s[i])-Byte("0"))*Pow10(Length(s)-i)));
End;


← →
Palladin ©   (2009-07-23 08:04) [4]

Чуть чуть Decod2 доработаный:

Procedure Decod2(n:Integer;r:TStrings);
Var
p:Integer;
c:Integer;
t:Integer;
Begin
p:=10; t:=0;
Repeat
 c:=(n mod p)-t;
 If c<>0 Then
  Begin
   r.Add(IntToStr(c));
   t:=t+c;
  End;
 p:=p*10;
Until (p div 10)>n;
End;


← →
Виталий   (2009-07-23 08:09) [5]

ооо...спасибо огромное. сейчас буду смотреть.


← →
oldman ©   (2009-07-23 17:53) [6]


> у меня пока только одна мысль - сделать таблицу разрядов
> и по ней проверять.


А пропарсить строку религия запрещает?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.006 c
15-1248650332
Petr V. Abramov
2009-07-27 03:18
2009.09.27
Центры НТТМ


2-1248318672
Виталий
2009-07-23 07:11
2009.09.27
Разложение числа на разрядные слагаемые


6-1207390865
Max
2008-04-05 14:21
2009.09.27
UDP


15-1248938142
desc
2009-07-30 11:15
2009.09.27
Справочная и оперативная информация.


2-1248165639
bag
2009-07-21 12:40
2009.09.27
рисовать в ondrawcell




   Наверх