国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++使用string的大數減法運算(2)

2020-01-26 13:24:35
字體:
來源:轉載
供稿:網友

本次項目目標:使用C++完成對于大數的減法運算,供大家參考,具體內容如下

項目要點

1.大數指的是遠超long long int的數據

2.將大數用矩陣進行存儲,并通過矩陣實現運算

3.本人采用字符串進行存儲,應注意char的特點

比如:

char a=161;

cout<<(int)a;

此時會輸出-95,而不是161,char類型首個比特位是作為正負號的

減法,此處只做自然數加法,因為存在負整數的話可以使用自然數加法來處理,只需判斷正負再看加減即可

運行截圖及代碼如下

#include<iostream>#include<string>#include<algorithm>using namespace std;#define n 10string dezero(string a)//用來去掉正數前面的0,也就是說可以輸入000001類似這樣的數字{ 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;}int judge(string a,string b)//判斷兩個正數的大小{ if(a.length()>b.length()) return 1; if(a.length()<b.length()) return -1; long int i; for(i=0;i<a.length();i++) { if(a.at(i)>b.at(i)) return 1; if(a.at(i)<b.at(i)) return -1; } return 0;}string minus(string a,string b)//自然數減法{ a=dezero(a); b=dezero(b); long int i,j=0; string c="0"; string c1,c2; string d="-"; if(judge(a,b)==0) return c; if(judge(a,b)==1) { c1=a; c2=b; } if(judge(a,b)==-1) { c1=b; c2=a; j=-1; } reverse(c1.begin(),c1.end()); reverse(c2.begin(),c2.end()); for(i=0;i<c2.length();i++) { if(c2.at(i)>=48&&c2.at(i)<=57) c2.at(i)-=48; if(c2.at(i)>=97&&c2.at(i)<=122) c2.at(i)-=87; } for(i=0;i<c1.length();i++) { if(c1.at(i)>=48&&c1.at(i)<=57) c1.at(i)-=48; if(c1.at(i)>=97&&c1.at(i)<=122) c1.at(i)-=87; } for(i=0;i<c2.length();i++) { c1.at(i)=c1.at(i)-c2.at(i); } for(i=0;i<c1.length()-1;i++) { if(c1.at(i)<0) {  c1.at(i)+=n;  c1.at(i+1)--; } } for(i=c1.length()-1;i>=0;i--) { if(c1.at(i)>0) break; } c1.erase(i+1,c1.length()); for(i=0;i<c1.length();i++) { if(c1.at(i)>=10) c1.at(i)+=87; if(c1.at(i)<10) c1.at(i)+=48; } reverse(c1.begin(),c1.end()); if(j==-1) c1.insert(0,d); return c1;}int main(){ string a,b; while(cout<<"input:"&&cin>>a>>b) { cout<<"output:"<<minus(a,b)<<endl; } return 0;}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武鸣县| 宣威市| 蕉岭县| 武隆县| 松滋市| 迁西县| 桐梓县| 上虞市| 安新县| 商水县| 醴陵市| 乐山市| 长宁县| 修文县| 建始县| 南丹县| 南平市| 武鸣县| 洪洞县| 泸西县| 霍山县| 奎屯市| 康马县| 梁河县| 合阳县| 中江县| 琼结县| 陆河县| 新郑市| 社旗县| 安阳市| 丹东市| 克拉玛依市| 丽水市| 和平县| 阿克苏市| 昌黎县| 神池县| 石狮市| 泸定县| 洛扎县|