Форум: "Начинающим";
Текущий архив: 2009.09.27;
Скачать: [xml.tar.bz2];
ВнизРазложение числа на разрядные слагаемые Найти похожие ветки
← →
Виталий (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 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.09.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c