Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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]

Хм&#133
А ты, что делить разучился ;)


 
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
15-1207680695
ProgRAMmer Dimonych
2008-04-08 22:51
2008.05.25
Электронная почта


15-1208155314
Qumbs
2008-04-14 10:41
2008.05.25
SSL через прокси


15-1208061864
antonn
2008-04-13 08:44
2008.05.25
Звук телефонного звонка


6-1187198078
di-m
2007-08-15 21:14
2008.05.25
Использование WebBrowser


15-1207771555
TIF
2008-04-10 00:05
2008.05.25
Ура! 11 000 000 статей MSDN будут переведены на русский язык...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский