博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
讨厌的大整数加法
阅读量:6090 次
发布时间:2019-06-20

本文共 6078 字,大约阅读时间需要 20 分钟。

#include 
#include
#include
#include
using namespace std;const int MAX = 110; //终于过了的.... // 要记得判断字符串长度!~class CHugeInt { char p[250]; public: CHugeInt(char* s){ strcpy(p,s); } CHugeInt(int s){ sprintf(p,"%d",s); } friend ostream& operator<<(ostream & cout, CHugeInt a){ cout<
=strlen(PB)){ strcpy(pa,p); strcpy(pb,PB); } else{ strcpy(pb,p); strcpy(pa,PB); } int alen=strlen(pa); int blen=strlen(pb); int A,B,j=0; char result[250]; int i,m,n; for( i=0,m=alen-1,n=blen-1;n>=0;i++,m--,n--){ A=pa[m]-'0'; B=pb[n]-'0'; if(A+B+j>9){ result[i]=A+B-10+j+'0'; j=1; } else{ result[i]=A+B+j+'0'; j=0; } } int r; for(r=i;m>=0;r++,m--){ A=pa[m]-'0'; if(A+j>9){ result[r]=A+j-10+'0'; j=1; } else{ result[r]=A+j+'0'; j=0; } } if(j==1){ result[r]='1'; r++; } result[r]='\0'; n=strlen(result); for(int i=0,j=n-1;i
=strlen(N)){ strcpy(pa,p); strcpy(pb,N); } else{ strcpy(pb,p); strcpy(pa,N); } int alen=strlen(pa); int blen=strlen(pb); int A,B,j=0; char result[250]; int i,m,n; for( i=0,m=alen-1,n=blen-1;n>=0;i++,m--,n--){ A=pa[m]-'0'; B=pb[n]-'0'; if(A+B+j>9){ result[i]=A+B-10+j+'0'; j=1; } else{ result[i]=A+B+j+'0'; j=0; } } int r; for(r=i;m>=0;r++,m--){ A=pa[m]-'0'; if(A+j>9){ result[r]=A+j-10+'0'; j=1; } else{ result[r]=A+j+'0'; j=0; } } if(j==1){ result[r]='1'; r++; } result[r]='\0'; n=strlen(result); for(int i=0,j=n-1;i
> s >> n) { CHugeInt a(s); //构造函数 1 CHugeInt b(n); // 构造函数 2 cout << a + b << endl; //重载<< 重载+号 1 cout << n + a << endl; //重载+号 2 cout << a + n << endl; //重载+号 3 需要返回对象 b += n; cout << ++ b << endl; //重载++b cout << b++ << endl; //重载b++ cout << b << endl; } return 0;}

 

#include 
#include
#include
#include
//错误原因...偷懒用int 相加...using namespace std;const int MAX = 110; class CHugeInt { char p[250]; int p1; public: CHugeInt(){ p[0]='\0'; p1=-1; } CHugeInt(char* s){ strcpy(p,s); p1=-1; } CHugeInt(int s){ p[0]='\0'; p1=s; } friend ostream& operator<<(ostream & cout, CHugeInt a){ if(a.p1!=-1){ cout<
=0;i++,m--,n--){ A=pa[m]-'0'; B=pb[n]-'0'; if(A+B+j>9){ result[i]=A+B-10+j+'0'; j=1; } else{ result[i]=A+B+j+'0'; j=0; } } int r; for(r=i;m>=0;r++,m--){ A=pa[m]-'0'; if(A+j>9){ result[r]=A+j-10+'0'; j=1; } else{ result[r]=A+j+'0'; j=0; } } if(j==1){ result[r]='1'; r++; } result[r]='\0'; n=strlen(result); for(int i=0,j=n-1;i
> s >> n) { CHugeInt a(s); //构造函数 1 CHugeInt b(n); // 构造函数 2 cout << a + b << endl; //重载<< 重载+号 1 cout << n + a << endl; //重载+号 2 cout << a + n << endl; //重载+号 3 需要返回对象 b += n; cout << ++ b << endl; //重载++b cout << b++ << endl; //重载b++ cout << b << endl; } return 0;}

 

#include 
#include
#include
#include
using namespace std;const int MAX = 110; class CHugeInt { //将int 相加 全部改成了字符串相加 可是还是不过 TAT 错误原因:字符串长度未预先判断 想当然以为int输入的长度小于字符串 char p[250]; public: CHugeInt(){ p[0]='\0'; } CHugeInt(char* s){ strcpy(p,s); } CHugeInt(int s){ sprintf(p,"%d",s); } friend ostream& operator<<(ostream & cout, CHugeInt a){ cout<
=0;i++,m--,n--){ A=pa[m]-'0'; B=pb[n]-'0'; if(A+B+j>9){ result[i]=A+B-10+j+'0'; j=1; } else{ result[i]=A+B+j+'0'; j=0; } } int r; for(r=i;m>=0;r++,m--){ A=pa[m]-'0'; if(A+j>9){ result[r]=A+j-10+'0'; j=1; } else{ result[r]=A+j+'0'; j=0; } } if(j==1){ result[r]='1'; r++; } result[r]='\0'; n=strlen(result); for(int i=0,j=n-1;i
=strlen(N)){ strcpy(pa,p); strcpy(pb,N); } else{ strcpy(pb,p); strcpy(pa,N); } int alen=strlen(pa); int blen=strlen(pb); int A,B,j=0; char result[250]; int i,m,n; for( i=0,m=alen-1,n=blen-1;n>=0;i++,m--,n--){ A=pa[m]-'0'; B=pb[n]-'0'; if(A+B+j>9){ result[i]=A+B-10+j+'0'; j=1; } else{ result[i]=A+B+j+'0'; j=0; } } int r; for(r=i;m>=0;r++,m--){ A=pa[m]-'0'; if(A+j>9){ result[r]=A+j-10+'0'; j=1; } else{ result[r]=A+j+'0'; j=0; } } if(j==1){ result[r]='1'; r++; } result[r]='\0'; n=strlen(result); for(int i=0,j=n-1;i
> s >> n) { CHugeInt a(s); //构造函数 1 CHugeInt b(n); // 构造函数 2 cout << a + b << endl; //重载<< 重载+号 1 cout << n + a << endl; //重载+号 2 cout << a + n << endl; //重载+号 3 需要返回对象 b += n; cout << ++ b << endl; //重载++b cout << b++ << endl; //重载b++ cout << b << endl; } return 0;}

 

转载于:https://www.cnblogs.com/Latticeeee/p/8601257.html

你可能感兴趣的文章
如何判断自己适不适合做程序员?这几个特点了解一下
查看>>
newinstance()和new有什么区别
查看>>
android下载封装类
查看>>
[node] 用 node-webkit 开发桌面应用
查看>>
Nginx访问控制和虚拟主机
查看>>
report widget not working for external users
查看>>
windows phone 摄像头得到图片是旋转90°
查看>>
Linux--sed使用
查看>>
没有显示器的情况下安装和使用树莓派
查看>>
【android】使用handler更新UI
查看>>
mochiweb 源码阅读(十五)
查看>>
前端面试中的常见的算法问题
查看>>
计算机语言的基本理论
查看>>
nodejs流之行读取器例子
查看>>
批量文件重命名工具
查看>>
简单说一下UWP中的JumpList
查看>>
unity将object[]或者string对象转换成枚举enum
查看>>
以太坊系列之六: p2p模块--以太坊源码学习
查看>>
使用scikit-learn解决文本多分类问题(附python演练)
查看>>
2018 年最值得关注的 JavaScript 趋势
查看>>