Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

подскажите пожалуйста, можно ли средствами паскаля сложить два числа длиною приблизительно 2000 символов. если да, то как?
я еще только учусь)))
H_T_V вне форума   Ответить с цитированием
Старый 17.12.2006, 21: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

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

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

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

спасибо огромное)))
я еще только учусь)))
H_T_V вне форума   Ответить с цитированием
Старый 18.12.2006, 00: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, по сути этот алгоритм и я вляется сложением "столбиком".

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложение 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


00:51.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.