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

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

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2013, 16:44   #1
Wadduh
Пользователь
 
Аватар для Wadduh
 
Регистрация: 26.03.2013
Сообщений: 16
По умолчанию Сложение больших чисел

Недавно наткнулся на следующую задачку..
Цитата:
Необходимо сложить два двоичных целых числа длинною n-бит каждое. Числа хранятся в двух массивах А и В, которые состоят из n элементов. Сумму этих чисел необходимо занести в двоичной форме в массив C, который состоит из n+1 элементов.
В общем то элементарная задача у которой должно быть несколько красивых решений. Я, например, решил бы ее так..
Код:
for i:=n downto 1 do begin //n - количество элементов массивов А и В
                             sum:=A[i]+B[i]+C[i+1];
                             if sum=3 then begin
                                               C[i+1]:=1;
                                               C[i]:=1;
                                               end
                                               else if sum=2 then begin
                                                                        C[i+1]:=0;
                                                                        C[i]:=1;
                                                                        end
                                               else 
                                                     C[i+1]:=sum;
                             end;
Вчера проверял на нескольких значениях..вроде все работает))

Интересуют оригинальные способы решения подобных задач суммирования мегабольших чисел не только в двоичной, но и в других системах исчисления(3,5,10,16-ричные)..сейчас как раз над этим думаю))
Wadduh вне форума Ответить с цитированием
Старый 31.03.2013, 21:14   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Открытие велосипеда?
Длинная арифметика - раздел олимпиадного программирования, в котором рассматривается реализация действий с большими числами, не умещающихся в стандартных типах данных.

Кстати, Ваше решение не очень красивое (только не агритесь пожалуйста ). А если число будет, ну хотя бы, десятичное? Это будет
Код:
if sum = 1 then
...
else if sum = 2 then
...

...
else if sum = 31 then
Напоминает факториал, над которым недавно смеялось полфорума

Возможно стоит завести переменную temp и что-то с ней делать?

Последний раз редактировалось Poma][a; 31.03.2013 в 21:18.
Poma][a вне форума Ответить с цитированием
Старый 31.03.2013, 22:04   #3
Wadduh
Пользователь
 
Аватар для Wadduh
 
Регистрация: 26.03.2013
Сообщений: 16
По умолчанию

Цитата:
Сообщение от 'Poma
Возможно стоит завести переменную temp и что-то с ней делать?
Нужно, если число десятичное..
..просто много людей решало эту задачу, и возможно кто то придумал решение отличное, от описанного в учебниках..
хотя вы правы, это то же самое, что изобретать велосипед
Wadduh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложение больших чисел, в чем ошибка? rubakKa Общие вопросы C/C++ 3 15.12.2010 13:12
Сложение двух десятичных положительных чисел. целых чисел))) PEro_man Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 01.12.2010 12:40
Сложение больших чисел Plazma Общие вопросы C/C++ 0 27.11.2010 17:11
сложение больших чисел SacReD_89 Общие вопросы C/C++ 21 25.04.2010 16:42
С# Сложение больших чисел SL1CK Помощь студентам 4 23.11.2009 21:07