栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++使用string的大数加法运算(1)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++使用string的大数加法运算(1)

本次项目目标:使用C++完成对于大数的加法运算,供大家参考,具体内容如下

项目要点

1.大数指的是远超long long int的数据

2.将大数用矩阵进行存储,并通过矩阵实现运算

3.本人采用字符串进行存储,应注意char的特点

比如:

char a=161;

cout<<(int)a;

此时会输出-95,而不是161,char类型首个比特位是作为正负号的

加法,此处只做自然数加法,因为存在负整数的话可以使用自然数减法来处理

运行截图及代码如下:

#include
#include
#include
using namespace std;
#define n 10
string dezero(string a)//用来去掉正数前面的0,也就是说可以输入000001类似这样的数字
{
 long int i;
 for(i=0;i48) break;
 }
 if(i==a.length()) return "0";
 a.erase(0,i);
 return a;
}
string add(string a,string b)//自然数加法
{
 a=dezero(a);
 b=dezero(b);
 string c;
 string d="0";
 long int kmin,kmax,i;
 reverse(a.begin(),a.end());
 reverse(b.begin(),b.end());
 if(a.length()>b.length()) {kmin=b.length();kmax=a.length();c=a;}
 else {kmin=a.length();kmax=b.length();c=b;}
 c.insert(c.length(),d);
 for(i=0;i=48&&a.at(i)<=57) a.at(i)-=48;
 if(a.at(i)>=97&&a.at(i)<=122) a.at(i)-=87;
 if(b.at(i)>=48&&b.at(i)<=57) b.at(i)-=48;
 if(b.at(i)>=97&&b.at(i)<=122) b.at(i)-=87;
 c.at(i)=a.at(i)+b.at(i);
 }
 for(i=kmin;i=48&&c.at(i)<=57) c.at(i)-=48;
 if(c.at(i)>=97&&c.at(i)<=122) c.at(i)-=87;
 }
 for(i=0;i=n) 
 {
 c.at(i+1)+=c.at(i)/n;
 c.at(i)=c.at(i)%n;
 }
 }
 if(c.at(kmax)==0) 
 {
 c.erase(kmax,kmax+1);
 }
 for(i=0;i=10) c.at(i)+=87;
 if(c.at(i)<10) c.at(i)+=48;
 }
 reverse(c.begin(),c.end());
 return c;
}
int main()
{
 string a,b;
 while(cin>>a>>b)
 {
 cout<

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/62312.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号