
07.04.2010, 01:55
|
|
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
С нами:
9227388
Репутация:
180
|
|
Пример реализации на билдере (на форму кидаем 3 едита и баттон):
PHP код:
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList* lst = new TStringList;
lst->CommaText = Edit1->Text; // записываем словарь в стринглист
unsigned int iBase = lst->Count; // основание системы счисления
unsigned int iNum = Edit2->Text.ToInt(); // число, которое надо преобразовать
unsigned int iLen = Edit3->Text.ToInt(); // длина комбинации
String sRes = ""; // результат
--iNum; // так, как комбинации начинаются с 0 (кобминация состоящая из первого символ словаря), уменьшаем число на 1
// преобразование числа в систему счисления с основанием iBase
while(iNum)
{
sRes.Insert(lst->Strings[iNum%iBase], 0);
iNum /= iBase;
}
// дописываем нули(первый символ словаря), если длина результата меньше длины комбинации
for(int i = sRes.Length(); i < iLen; ++i)
sRes.Insert(lst->Strings[0], 0);
lst->Clear();
delete lst;
Edit4->Text = sRes; // выводим результат
}
//---------------------------------------------------------------------------
в Edit1 пишем элементы словаря через запятую - a,b,c,d,f,g..... (если в словаре есть запятая, то пишем ее в кавычках)
Edit2 - номер комбинации
Edit3 - длина комбинации
Edit4 - результат
Последний раз редактировалось M_script_; 07.04.2010 в 01:58..
|
|
|