Страницы

Поиск по вопросам

среда, 5 декабря 2018 г.

C++ Сложение огромных чисел

Надо сложить 2 целых числа a и b, но при этом их сумма может доходить до 10^100. Я написал код, он работает только до определенного момента, когда пробуешь сложить например "111111111111111111111111111111" и "222222222222222222222222222222", ответ выдает уже не верный.
Как можно сложить два огромных числа в С++ чтобы их сумма могла доходить до 10^100 ?
Прилагаю код, но буду рад если вы покажете более простой способ решения.
#include #include #include using namespace std; int main() { int ia,ib; int z=1; string str1, str2; cin>>str1>>str2; int len1=str1.length(); int len2=str2.length(); char mas1[101], mas2[101]; int mas3[101]; double sk=0; for(int i=0;ilen2){lenm=len1;} if(len2>len1){lenm=len2;} if(len1==len2){lenm=len1;} for(int i=0;iСпасибо за поправления, программа почти готова, но все равно есть одна ошибка. Когда складываем "11" и "11" выводит "22", а когда "15" и "15" вместо "30", выводит "20". В чем проблема?
Новый код прилагаю:
#include #include #include using namespace std; int main() { string str1, str2; cin>>str1>>str2; int len1=str1.length(); int len2=str2.length();
char mas1[101], mas2[101]; int mas3[101], mas4[101];
for(int i=0;i for(int i=0;i int length; if (len1 > len2) length = len1 + 1; else length = len2 + 1;
for (int ix = 0; ix < length; ix++) { mas4[ix] += mas3[ix]; mas4[ix + 1] += (mas4[ix] / 10); mas4[ix] %= 10; }
if (mas4[length - 1] == 0) length--;
for(int i=0;i return 0; }


Ответ

Есть масса информации на тему "Длинная арифметика" в С/С++ Например:
http://cppstudio.com/post/5036/ https://mindhalls.ru/big-number-in-c-cpp-add-sub/ http://e-maxx.ru/algo/big_integer

Комментариев нет:

Отправить комментарий