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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Длинная арифметика
сообщение
Сообщение #1


Гость






Не могли бы ли вы мне помочь (факю читал не то что нужно). Мне нужно : реализация длинной арифметики на массиве цифр этого числа, нужно превеод интеджера в длинную арифметику, остаток от деления и вывод этого числа.
например Inttolong(a:integer):integer;
modlong(num1,num2:long):long;
write(long);
Спасибо большое, если поможите.

P.S. Пишу не своего компьютера
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Reflex, я еще не успел просто smile.gif

Смотри... Вот так вычисляется НОК (по-английски LCM: Least Common Multiplier) для обычных чисел типа Integer (для проверки - запусти эту программу и посмотри, что она выдает):

{ GCD - это Greatest Common Divider = НОД }
function GCD (A: integer; B: integer): integer;
begin
while (a <> 0) and (b <> 0) do
if a >= b then
a := a mod b
else
b := b mod a;
GCD := a + b;
end;

function LCM (A: integer; B: integer): integer;
begin
LCM := a * b div GCD (a, b)
end;

begin
A := 12;
B := 23;
R := LCM(A, B);
writeln('НОК = ', R);
end.


Совершенно аналогично вычислим его для длинных чисел, заменив все операции на процедуры:

uses longmath;

procedure GCD (A: TNum; B: TNum; var res: TNum);
var
Zero, DRes, MRes, T: TNum;
begin
InToTNum(0, Zero);
while (Cmp(a, Zero) = '>') and (Cmp(b, Zero) = '>') do
if Cmp(a, b) in ['>', '='] then begin

Dvd(a, b, DRes);
Mul(DRes, b, MRes);
Sub(A, MRes, T);
A := T;

end
else begin

Dvd(b, a, DRes);
Mul(DRes, a, MRes);
Sub(b, MRes, T);
B := T;

end;

Add(a, b, res);
end;

function LCM (A: TNum; B: TNum; var res: TNum);
var T, MRes: TNum;
begin
Mul(a, b, MRes);
GCD(a, b, T);
Dvd(MRes, T, res);
end;

var
A, B, R: TNum;
begin
InputLong(A); { для проверки введи 12}
InputLong(B); { здесь - для проверки - 23 }
LCM(A, B, R);
Write('NOD = ');
PrintLong( r ); { ... и сравни результат... }
end.


Цитата
Неужели Volvo узнав что я девушка, передумал мне помочь
С чего ты взяла? blink.gif Не было этого никогда, чтоб я из-за пола человека отказывался ему помогать...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Reflex   Длинная арифметика   11.10.2006 0:56
volvo   Ну, раз то, что ты читал - не то, что нужно, то Go…   11.10.2006 1:05
Гость   искал... но не нашел, а реализовать не получается   11.10.2006 1:09
Гость   помогите, в четверг сдавать :(   11.10.2006 1:15
Michael_Rybak   Вот, пока не перешел на с++, пользовал такую свою …   11.10.2006 1:43
Гость   Спасибо :) помогли   11.10.2006 1:48
Гость   я понимаю, что выгляжу полным нубом, но подскажите…   11.10.2006 22:00
volvo   Точно так же, как и для обычных (по той же формуле…   11.10.2006 22:02
Гость   нет :(   11.10.2006 22:52
Гость   а почему поиск на НОК не сработал?   11.10.2006 23:01
Reflex   Я зарегестрировалась (извините за флуд) Надеюсь, …   11.10.2006 23:17
Reflex   Volvo... А Вы не могли бы мне подсказать как наход…   11.10.2006 23:30
Michael_Rybak   НОК(a, b) = a*b/НОД(a, b) НОД ищите алгоритмом эв…   12.10.2006 0:02
Reflex   извините, но я изучаю паскаль всего месяц и никак …   12.10.2006 0:25
Reflex   :'( Неужели Volvo узнав что я девушка, передум…   12.10.2006 1:13
volvo   Reflex, я еще не успел просто :) Смотри... Вот та…   12.10.2006 1:28
Reflex   Спасибо, сейчас попробую Просто когда я изучала HT…   12.10.2006 1:42
Reflex   сдала, но преподаватель сказал юниты - хорошо, но …   13.10.2006 22:17
Michael_Rybak   Возьми модуль, удали в нем строки "Unit LongM…   14.10.2006 3:17


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

 





- Текстовая версия 19.04.2024 8:31
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name