Архив исходников программ, модулей и компонентов на Delphi


Начальная страница

Поиск по базе



Операционная система
Настройка приложения
Взаимодействия приложений
Файлы и директории
Строки и символы
Математика
Базы данных
Интернет и сеть
Мультимедиа
Аппаратная часть
VCL
Другие разделы [0]
 

Количество записей в базе - 537
Сегодня добавлено – 0

Вычисления



Вернуться к списку функций
 Извлечение из числа группы цифр

 Прислал: Прахожий ( 21 марта 2009 г. )
©  Прахожий
 Описание:
function extract_digits(d,n,p:integer):integer;
d - само число;
n - количество цифр в группе;
p - позиция справа, с которой начинается группа

Пример:

extract_digits(8281324,3,4) - извлечь 3 цифры с позиции справа 4
==> 281

 Зависимости:
нет

 Ограничения:
Проверено на D3/D7 Win2000

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Извлечение из числа группы цифр

function extract_digits(d,n,p:integer):integer;
d - само число;
n - количество цифр в группе;
p - позиция справа, с которой начинается группа

Пример:

extract_digits(8281324,3,4) - извлечь 3 цифры с позиции справа 4
==> 281

Зависимости: нет
Автор:       Прахожий
Copyright:   Прахожий
Дата:        21 марта 2009 г.
***************************************************************** }

function extract_digits(d,n,p:integer):integer;
  function pow_10(r:integer):integer; //функция возведения 10 в степень r: 0 -> 1; 1 -> 10; 2 -> 100; 3 -> 1000 ...
  var i:integer;
  begin
    result:=1;
    if r>0 then for i:=1 to r do result:=result*10;
  end;
begin
  n:=pow_10(n);
  d:=d div pow_10(p-1); //сдвиг вправо на n цифр
  while d>n-1 do d:=(d mod n); // сокращение числа d до n цифр
  result:=d;
end;

 Пример использования:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
  for i:=0 to 20000 do
  begin
   ListBox1.Items.add(inttostr( extract_digits(i,3,1) )) ;
  end;

  Randomize;
  i:=Random(10000000);
  Caption:= inttostr( extract_digits(i,3,4))+' of ' + inttostr(i);
end;


Вернуться к списку функций

Наверх ▲