IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Деление двух длинных чисел, как реализовать с помощью объектов в Delphi?
serogan
сообщение 2.02.2007 18:11
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Женский

Репутация: -  0  +


В FAQ'е (длинная арифметика) нашла функции для деления двух длинных чисел. Можете объяснить, как реализовать это в Delphi, желательно как объекты? Заранее спасибо. smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 4.02.2007 15:08
Сообщение #2


Гость






Это - не метод объекта, просто процедура, описанная в Interface - части модуля (чтобы иметь к ней доступ извне), так же, как и та, что присутствует в HugeObj ...

{ A := n! }
procedure Fact(Var A: TObj; n: LongInt);
var T: TObj; i: LongInt;
begin
T.Init;

{
Вот это, конечно не очень красиво, надо бы как-то сделать
инициализацию TObj обычным числом... Но работает...
}
T.X^[1] := 1;
T.X^[0] := 1;

for i := 2 to n do begin
A.MulLongShort(T, i);
T.X^ := A.X^;
end;
end;



Цитата
В HugeObj для того, чтобы можно было выводить результат в memo (ввиде текста) Алена дала мне функцию Function HugeToStr: String. В dlinna наверно тоже что-то такое нужно добавить?
А можно, я за нее? rolleyes.gif

Опять же, аналогично тому, что делается в WriteLong, только вывод - не в файл, а в строку...
{ А вот это - уже метод объекта, не забывай его описание добавить в Type TObj }
Function TObj.HugeToStr: String;
var ls,s:string;
i:integer;
begin
result := '';
str(_osn div 10, ls);
result := result + IntToStr(X^[X^[0]]);
for i:=X^[0]-1 downto 1 do
begin
str(X^[i],s);
while length(s)<length(ls) do s:='0'+s;
result := result + s;
end;
end;
 К началу страницы 
+ Ответить 

Сообщений в этой теме
serogan   Деление двух длинных чисел   2.02.2007 18:11
volvo   Здесь: Длинная арифметика что, НЕ объекты? Вот ту...   2.02.2007 19:48
Гость   Но в Hugeobj только умножение :unsure: , деления ...   2.02.2007 23:42
volvo   деления нет (оно есть выше, но вроде не через объе...   3.02.2007 3:05
Айра   Мне тоже нужно это деление. Я нашла в DRKB модуль,...   3.02.2007 0:38
volvo   Давай по-порядку: 1) "почему" - потому, ...   3.02.2007 0:53
Айра   Спасибо, volvo! Все откомпилировалось.   3.02.2007 1:10
Айра   volvo, мне кажется, вы уже поняли, кто был гостем ...   3.02.2007 3:47
volvo   Естественно, у меня IP адреса перед глазами :) В ...   3.02.2007 4:27
Айра   Это я поняла. Но расширение in я встретила впервы...   3.02.2007 4:37
volvo   Я создавао обычный текстовый файл, и потом переиме...   3.02.2007 4:56
Айра   А я так делала. При работе программы был просто ч...   3.02.2007 5:01
Айра   Еще раз спасибо! До свидания. Утро уже как ни ...   3.02.2007 5:07
volvo   1) Как называются у тебя входной/выходной файл? 2)...   3.02.2007 5:06
Айра   Входной я назвала d1.text, а выходной - d.text. А ...   3.02.2007 11:27
volvo   Нет... Просто я что-то не так портировал. Исходная...   3.02.2007 14:14
volvo   Да, так и есть... Модуль, строка №242 - ...   3.02.2007 14:31
Айра   Спасибо! Я исправила. Теперь у меня такой во...   4.02.2007 0:12
volvo   Убрать использование TLargeInt и пользоваться толь...   4.02.2007 9:39
Айра   Буду пользоваться dlinna. Было бы неплохо. Я пыт...   4.02.2007 14:41
volvo   Это - не метод объекта, просто процедура, описанна...   4.02.2007 15:08
Айра   Спасибо!!! Конечно :) Я правильно...   4.02.2007 16:14
volvo   :yes2: Забыла инициализировать переменную Per......   4.02.2007 16:25
Айра   :wink: :unsure: Сделала процедуру с делением....   4.02.2007 21:05
volvo   Добавить строку в Fact: { A := n! } procedure...   4.02.2007 21:24
Айра   volvo, спасибо тебе огромное!!! :give...   4.02.2007 22:35


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 12.07.2025 16:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"