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

> ВНИМАНИЕ!

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

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





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

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


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


Профи
****

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

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


Цитата
Забыла инициализировать переменную Per...

wink.gif unsure.gif

Сделала процедуру с делением. Воть:
procedure TForm12.Button3Click(Sender: TObject);
var m,n: longint;
f1,f2,ost,raz: TObj;
begin
if (edit5.text='') or (edit6.text='') then
begin
MessageBeep(MB_ICONHAND);
ShowMessage('Не заданы значения!');
end
else
begin
memo2.Text:='';
m:=StrToInt(edit5.Text);
n:=StrToInt(edit6.Text);
f1.Init; f2.Init; ost.Init; raz.Init;
fact(f1, m);
fact(f2, m-n);
raz.DivLongTwo(f1,f2,ost);
memo2.text:=raz.HugeToStr;
end;
end;


Только если просто считать факториалы от 0 или 1 опять будет "access violation at address 0046ECE in module ... Read of address 02C0FFFC" и выделится эта строка в модуле dlinna

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;

а если делить их друг на дружку будет считать неправильно(((

Мне надо прописать эти варианты (if n=0 then ...) или можно сделать по-другому?





 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
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

 



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