Надо сложить 2 целых числа a и b, но при этом их сумма может доходить до 10^100. Я написал код, он работает только до определенного момента, когда пробуешь сложить например "111111111111111111111111111111" и "222222222222222222222222222222", ответ выдает уже не верный.
Как можно сложить два огромных числа в С++ чтобы их сумма могла доходить до 10^100 ?
Прилагаю код, но буду рад если вы покажете более простой способ решения.
#include <iostream>
#include <string>
#include <iomanip>
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;i<len1;i++)
{
strcpy(mas1, str1.c_str());
}
for(int i=0;i<len2;i++)
{
strcpy(mas2, str2.c_str());
}
int lenm=0;
if(len1>len2){lenm=len1;}
if(len2>len1){lenm=len2;}
if(len1==len2){lenm=len1;}
for(int i=0;i<lenm;i++)
{
if(len1<z){ib=0;}else{ia = mas1[len1-z] - '0';}
if(len2<z){ib=0;}else{ib = mas2[len2-z] - '0';}
sk+=((ia+ib)*(pow(10,z)))/10;
z++;
}
cout<<setprecision(100)<<sk<<endl;
return 0;
}
Спасибо за поправления, программа почти готова, но все равно есть одна ошибка. Когда складываем "11" и "11" выводит "22", а когда "15" и "15" вместо "30", выводит "20". В чем проблема?
Новый код прилагаю:
#include <iostream>
#include <string>
#include <iomanip>
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<len1;i++)
{
strcpy(mas1, str1.c_str());
int ia = mas1[i] - '0';
mas3[i] = ia;
}
for(int i=0;i<len2;i++)
{
strcpy(mas2, str2.c_str());
int ia = mas2[i] - '0';
mas4[i] = ia;
}
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<len2;i++)
{
cout<<mas4[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
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Имеется небольшой шаблон функции, который пиинимает в качестве аргументов две ссылки на переменные одинакового типа и меняет их значения...
Есть программа на C#, необходимо переписать код на C++В итоге мучаюсь с тем, что не могу подключиться к БД
Только начинаю изучать ООП, написал класс для матриц и перегрузил операторы ввода, вывода, +, -, =Программа работает до момента с сложением...
Ребят помогите с чем связана такая ошибка? Почему выходит за рэнджЗаметил во многих программах моих появляется когда использую большие числа