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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2009, 17:29   #1
SL1CK
Пользователь
 
Регистрация: 15.03.2009
Сообщений: 84
По умолчанию С# Сложение больших чисел

Нужно сложить 2 больших числа(99999999+99999999).. если просто складывать то программа не сможет сложить эти 2 числа, нужно сложить их используя символьный тип, подскажите как примерно это можно сделать
SL1CK вне форума Ответить с цитированием
Старый 23.11.2009, 17:57   #2
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Ну такие числа можно сложить и стандартными средствами (по крайней мере в Pascal'е, но не думаю что C# - ущербный язык ). А если действительно большие, что не влезают в 8 байт, тут применяется так называемая длинная арифметика. Если в Гугле поискать, то скорее всего на C# можно реализацию найти.
k1r1ch вне форума Ответить с цитированием
Старый 23.11.2009, 20:08   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

SL1CK, а что, так:
Код:
int64 Num1 = 99999999;
int64 Num2 = 99999999;
int64 MySum = Num1 + Num2;
не катит? (по рукой нет среды, чтобы проверить...)

p.s. а если всё же нужна длинная арифметика, тогда описывайте две строчки, заполняйте из числами. выравнивайте по правой границе и складывайте поразрядно с переносом..
столбиком числа складывать то умеете? вот так и делайте!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.11.2009, 20:36   #4
SL1CK
Пользователь
 
Регистрация: 15.03.2009
Сообщений: 84
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
SL1CK,
тогда описывайте две строчки, заполняйте из числами. выравнивайте по правой границе и складывайте поразрядно с переносом..
столбиком числа складывать то умеете? вот так и делайте!
мне бы примерчик какой то.. я не знаю как присвоить строке числа и потом выравнивать по правой границе...
SL1CK вне форума Ответить с цитированием
Старый 23.11.2009, 21:07   #5
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

На Паскале мне удобней всего писать так:
Код:
readln(input,st1);stq:='123456789';
l1:=length(St1);
for i:=1 to l1 do ar1[i]:=pos(st1[l1-i+1],stq);
readln(input,st1);
l2:=length(St1);
for i:=1 to l2 do ar2[i]:=pos(st1[l2-i+1],stq);
if l1>l2 then l:=l1 else l:=l2;
ost:=0;for i:=1 to l do begin ar[i]:=ar1[i]+ar2[i]+ost;ost:=ar[i] div 10;ar[i]:=ar[i] mod 10;end;
if ost>0 then begin inc(l);ar[l]:=ost;end;
for i:=l downto 1 do write(output,ar[i]);
Если надо, можно переписать через константу перевода символа (табличное смещение 48), с большим количеством разрядов в 1 елементе, без массива на результат (хранить результат вместо одного из начальных чисел) и т.д. Если не знаете Паскаля, перепишу на плюсах. Приношу свои извинения, шарпа пока не знаю. Обратное хранение разрядов использую, потому что так удобней работать и не возникает никаких проблем при операциях в будущем (к примеру, если надо будет результат умножить на число, потом извлечь квадратный корень и к его значению снова что-то прибавить).
LeBron вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение остатка от деления очень больших чисел Pavel_Ine Общие вопросы C/C++ 6 22.11.2009 20:49
сложение двух чисел pif Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 18 15.02.2009 12:51
алгоритм сравнения больших чисел со сдвигом WOLFak Паскаль, Turbo Pascal, PascalABC.NET 0 29.12.2008 22:36
Библиотека больших чисел на Delphi Victor1987 Помощь студентам 10 11.04.2008 08:25
сложение огромных чисел H_T_V Паскаль, Turbo Pascal, PascalABC.NET 6 18.12.2006 08:14