C++使用string的大數(shù)加法運算(1)
本次項目目標:使用C++完成對于大數(shù)的加法運算,供大家參考,具體內(nèi)容如下
項目要點
1.大數(shù)指的是遠超long long int的數(shù)據(jù)
2.將大數(shù)用矩陣進行存儲,并通過矩陣實現(xiàn)運算
3.本人采用字符串進行存儲,應(yīng)注意char的特點
比如:
char a=161;
cout<<(int)a;
此時會輸出-95,而不是161,char類型首個比特位是作為正負號的
加法,此處只做自然數(shù)加法,因為存在負整數(shù)的話可以使用自然數(shù)減法來處理
運行截圖及代碼如下:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
#define n 10
string dezero(string a)//用來去掉正數(shù)前面的0,也就是說可以輸入000001類似這樣的數(shù)字
{
long int i;
for(i=0;i<a.length();i++)
{
if(a.at(i)>48) break;
}
if(i==a.length()) return "0";
a.erase(0,i);
return a;
}
string add(string a,string b)//自然數(shù)加法
{
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<kmin;i++)
{
if(a.at(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<kmax+1;i++)
{
if(c.at(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<kmax;i++)
{
if(c.at(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<c.length();i++)
{
if(c.at(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<<add(a,b);
}
return 0;
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語言實現(xiàn)航班售票系統(tǒng) C語言實現(xiàn)航班管理系統(tǒng)
這篇文章主要為大家詳細介紹了C語言實現(xiàn)航班售票系統(tǒng),C語言實現(xiàn)航班管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-12-12
QT連接Mysql數(shù)據(jù)庫的實現(xiàn)步驟
本文主要介紹了QT連接Mysql數(shù)據(jù)庫的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
C++ boost::asio編程-異步TCP詳解及實例代碼
這篇文章主要介紹了C++ boost::asio編程-異步TCP詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下2016-11-11
C++實現(xiàn)單鏈表刪除倒數(shù)第k個節(jié)點的方法
這篇文章主要介紹了C++實現(xiàn)單鏈表刪除倒數(shù)第k個節(jié)點的方法,結(jié)合實例形式分析了C++單鏈表的定義、遍歷及刪除相關(guān)操作技巧,需要的朋友可以參考下2017-05-05
C++ opencv實現(xiàn)的把藍底照片轉(zhuǎn)化為白底照片功能完整示例
這篇文章主要介紹了C++ opencv實現(xiàn)的把藍底照片轉(zhuǎn)化為白底照片功能,結(jié)合完整實例形式詳細分析了C++使用opencv模塊進行圖片轉(zhuǎn)換操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2019-12-12
java 中ArrayList與LinkedList性能比較
這篇文章主要介紹了java 中ArrayList與LinkedList性能比較的相關(guān)資料,需要的朋友可以參考下2017-03-03

