Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
ВнизМатематика Найти похожие ветки
← →
VirEx © (2008-05-01 19:50) [0]Нужно разбить число на входящие в него сотни десятки и единицы.
Если число более 1000, например 2000 оно не считается.
Примеры:
1526 - 1000, 500, 20, 6
2407 - 400, 7
57 - 50, 7
Как можно реализовать попроще?
← →
Andy BitOff © (2008-05-01 19:58) [1]Хм…
А ты, что делить разучился ;)
← →
VirEx © (2008-05-01 20:02) [2]Размер числа не ограничен, хоть до 352345634763567.
Зачем процессор напрягать?
← →
Andy BitOff © (2008-05-01 20:03) [3]Ну тогда строку с конца на 3 знака подели и с ними работай.
← →
korneley © (2008-05-01 20:13) [4]Так вроде, mod и вычитание. Или, если уж так милы строки, откусывать по одному сиволу с хвоста, заменяя их на #48
← →
Andy BitOff © (2008-05-01 21:02) [5]Поскольку стринг у нас массив, перевернуть этот массив так, что бы вместо 12345 мы получили 54321, тогда (индекс — 1) будет равен количеству нулей
← →
{RASkov} © (2008-05-01 21:27) [6]for N:=1 to Length(SNum) do
Lst.Add(SNum[N]+StringOfChar(#48, Length(SNum)-N));
← →
VirEx © (2008-05-01 22:35) [7]
> [6] {RASkov} © (01.05.08 21:27)
спасибо за StringOfChar :)
← →
Игорь Шевченко © (2008-05-01 23:06) [8]
> Размер числа не ограничен, хоть до 352345634763567.
ну что это за число - тьфу, а не число. В int64 без напряга влезает, а там и div и mod прекрасно работают.
← →
VirEx © (2008-05-01 23:09) [9]
> [8] Игорь Шевченко © (01.05.08 23:06)
какая уже разница, всеравно ограничение 1000 :)
← →
{RASkov} © (2008-05-02 00:21) [10]
procedure GetNumbers(Num: Int64; Lst: TStrings);
var N, K: Integer;
begin
if not Assigned(Lst) then Exit else Lst.Clear;
N:=10;
repeat
K:=Num mod N;
if (K>0) and (K<2000) then Lst.Add(IntToStr(K));
Num:=Num - K;
N:=N*10;
until Num<=0;
end;
procedure GetSNum(Num: Int64; Lst: TStrings); overload;
var N: Integer; S: String;
begin
if not Assigned(Lst) then Exit else Lst.Clear;
S:=IntToStr(Num);
for N:=1 to Length(S) do Lst.Add(S[N]+StringOfChar(#48, Length(S)-N));
end;
procedure GetSNum(SNum: String; Lst: TStrings); overload;
var N: Integer;
begin
if not Assigned(Lst) then Exit else Lst.Clear;
for N:=1 to Length(SNum) do Lst.Add(SNum[N]+StringOfChar(#48, Length(SNum)-N));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetNumbers(StrToInt64Def(Edit1.Text, 100), Memo1.Lines);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
GetSNum(StrToInt64Def(Edit1.Text, 100), Memo1.Lines);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
GetSNum(Edit1.Text, Memo1.Lines);
end;
← →
{RASkov} © (2008-05-02 00:22) [11]> GetSNum"ы
не правильные)
← →
Плохиш © (2008-05-02 09:55) [12]
> VirEx © (01.05.08 19:50)
Дармоеды маст дай.
← →
VirEx © (2008-05-02 10:36) [13]Удалено модератором
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c