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

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

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

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


Гость






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

P.S. Пишу не своего компьютера
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 11.10.2006 21:28
Сообщение #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   Длинная арифметика   10.10.2006 20:56
volvo   Ну, раз то, что ты читал - не то, что нужно, то Go...   10.10.2006 21:05
Гость   искал... но не нашел, а реализовать не получается   10.10.2006 21:09
Гость   помогите, в четверг сдавать :(   10.10.2006 21:15
Michael_Rybak   Вот, пока не перешел на с++, пользовал такую свою ...   10.10.2006 21:43
Гость   Спасибо :) помогли   10.10.2006 21:48
Гость   я понимаю, что выгляжу полным нубом, но подскажите...   11.10.2006 18:00
volvo   Точно так же, как и для обычных (по той же формуле...   11.10.2006 18:02
Гость   нет :(   11.10.2006 18:52
Гость   а почему поиск на НОК не сработал?   11.10.2006 19:01
Reflex   Я зарегестрировалась (извините за флуд) Надеюсь, ...   11.10.2006 19:17
Reflex   Volvo... А Вы не могли бы мне подсказать как наход...   11.10.2006 19:30
Michael_Rybak   НОК(a, b) = a*b/НОД(a, b) НОД ищите алгоритмом эв...   11.10.2006 20:02
Reflex   извините, но я изучаю паскаль всего месяц и никак ...   11.10.2006 20:25
Reflex   :'( Неужели Volvo узнав что я девушка, передум...   11.10.2006 21:13
volvo   Reflex, я еще не успел просто :) Смотри... Вот та...   11.10.2006 21:28
Reflex   Спасибо, сейчас попробую Просто когда я изучала HT...   11.10.2006 21:42
Reflex   сдала, но преподаватель сказал юниты - хорошо, но ...   13.10.2006 18:17
Michael_Rybak   Возьми модуль, удали в нем строки "Unit LongM...   13.10.2006 23:17


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

 



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