Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2006, 20:42   #1
H_T_V
 
Аватар для H_T_V
 
Регистрация: 10.12.2006
Сообщений: 3
По умолчанию сложение огромных чисел

подскажите пожалуйста, можно ли средствами паскаля сложить два числа длиною приблизительно 2000 символов. если да, то как?
я еще только учусь)))
H_T_V вне форума Ответить с цитированием
Старый 17.12.2006, 20:54   #2
AVer
Андрей
Форумчанин
 
Аватар для AVer
 
Регистрация: 21.11.2006
Сообщений: 457
По умолчанию

Могу предложить вот такой кривоватый алгоритм:

Сначала надо уровнять их по длине. (Прим. 123 и 56 -> 1 кинуть в буфер)
Потом брать по N символов и складывать. Если Длина результата превышает N, то все что лишнее Прибавляется к следующему куску в N символов. И вот так вот по кускам вывести в строку...

-------------
Пример
1661564874564678 + 4897453427489 // Буфер1 = 166
1564874564678 + 4897453427489 // Пусть N = 5
1) 64678 + 27489 = 92167 // Добавляем в строку-ответ 92167
2) 48745 + 74534 = 123279 // Добавляем в строку-ответ 23279, 1 в Буфер2.
3) 156 + 489 + 1(Буф2) = 646 // Добавляем в строку-ответ 646 и 166
В итоге в ответе 1666462327992167
ICQ: 5311314
[SIGPIC][/SIGPIC]

Последний раз редактировалось AVer; 17.12.2006 в 21:10.
AVer вне форума Ответить с цитированием
Старый 17.12.2006, 21:08   #3
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

А вот библиотечка RSA (содранная с C#)
Вложения
Тип файла: zip Rsa1.zip (9.3 Кб, 24 просмотров)
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Старый 17.12.2006, 21:37   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,495
По умолчанию

вообще если стандартными средствами не складывается. то нужно реализовать что-то типа сложения столбиком, как в 5 классе... хранить ответ в строке. и промежуточные действия можно тоже в строке.
Alar вне форума Ответить с цитированием
Старый 17.12.2006, 22:11   #5
H_T_V
 
Аватар для H_T_V
 
Регистрация: 10.12.2006
Сообщений: 3
По умолчанию

спасибо огромное)))
я еще только учусь)))
H_T_V вне форума Ответить с цитированием
Старый 17.12.2006, 23:06   #6
AVer
Андрей
Форумчанин
 
Аватар для AVer
 
Регистрация: 21.11.2006
Сообщений: 457
По умолчанию

Несмотря на то, что H_T_V уже отписалась, выложу програмную реализацию моего алгоритма:
Код:
var Buf1,s1,s2,rez,xs:string;
i,x,y,Buf2:integer;

begin
readln(s1);
readln(s2);
if length(s1) > length(s2) then
begin
Buf1:=Copy(s1,1,length(s1)-length(s2));
Delete(s1,1,length(s1)-length(s2));
end else
if length(s1) < length(s2) then
begin
Buf1:=Copy(s2,1,length(s2)-length(s1));
Delete(s2,1,length(s2)-length(s1));
end;

for i:=length(s1) downto 1 do
begin
Val(s1[i],x,x);
Val(s2[i],y,y);
x:=x+y+Buf2;
Buf2:=0;
if x div 10 <> 0 then
begin
x:=x mod 10;
Buf2:=1;
end;
Str(x,xs);
Rez:=xs+Rez;
end;

if Buf2 <> 0 then
begin
Val(buf1[length(buf1)],x,x);
Delete(Buf1,Length(buf1)-1,1);
x:=x+Buf2;
Str(x,xs);
Rez:=xs+rez;
end;

Rez:=Buf1+Rez;
Writeln(Rez);
ReadLn;
end.
Alar, по сути этот алгоритм и я вляется сложением "столбиком".
ICQ: 5311314
[SIGPIC][/SIGPIC]

Последний раз редактировалось AVer; 17.12.2006 в 23:28.
AVer вне форума Ответить с цитированием
Старый 18.12.2006, 08:14   #7
H_T_V
 
Аватар для H_T_V
 
Регистрация: 10.12.2006
Сообщений: 3
По умолчанию

AVer, у меня получалось что-то похожее... но довести до ума оказалось тяжело, так что спасибо))) пойду разбираться в вашем решении
я еще только учусь)))
H_T_V вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложение Droid Общие вопросы Delphi 14 07.05.2008 13:23
вычисление суммы чисел, кратных 3 из последовательности, состоящей из 10 чисел, заранее заданных Белка Помощь студентам 3 27.10.2007 11:53
Поразрядное сложение AlexBee Общие вопросы C/C++ 1 26.10.2007 22:45