019:别叫,这个大整数已经很简化了!
2018-06-17 21:30:25来源:未知 阅读 ()
总时间限制: 1000ms 内存限制: 65536kB 描述 程序填空,输出指定结果 #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> using namespace std; const int MAX = 110; class CHugeInt { // 在此处补充你的代码 }; int main() { char s[210]; int n; while (cin >> s >> n) { CHugeInt a(s); CHugeInt b(n); cout << a + b << endl; cout << n + a << endl; cout << a + n << endl; b += n; cout << ++ b << endl; cout << b++ << endl; cout << b << endl; } return 0; } 输入 多组数据,每组数据是两个非负整数s和 n。s最多可能200位, n用int能表示 输出 对每组数据,输出6行,内容分别是: 样例输入 99999999999999999999999999888888888888888812345678901234567789 12 6 6 样例输出 99999999999999999999999999888888888888888812345678901234567801 99999999999999999999999999888888888888888812345678901234567801 99999999999999999999999999888888888888888812345678901234567801 25 25 26 12 12 12 13 13 14
这题需要写三个构造函数,分别是无参,int参数,char *参数。还需要重载3个+运算符,分别对应CHugeInt+int,int+CHugeInt,CHugeInt+CHugeInt,还需要重载前置++和后置++,最后还需要一个<<的重载。代码如下:
#include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> using namespace std; const int MAX = 110; class CHugeInt { // 在此处补充你的代码 private: char maxNum[210]; int len; public: CHugeInt(char * s){ strcpy(maxNum,s); int i=0,j=strlen(s)-1; while(i<j) { swap(maxNum[i],maxNum[j]); i++; j--; } //cout<<"init:"<<maxNum<<endl; len=strlen(s); //cout<<"Init success"<<endl; } CHugeInt(){ len=0; } CHugeInt(int n){ int i=0; if(n==0) { maxNum[i++]='0'; }else{ while(n) { maxNum[i++]=n%10+'0'; n=n/10; } } maxNum[i]='\0'; len=i; //cout<<maxNum<<endl; } CHugeInt operator+(CHugeInt & a) { //cout<<"hrer"<<endl; int i=0,j=0; int t,sum=0; CHugeInt temps; strcpy(temps.maxNum,maxNum); temps.len=len; //cout<<"before:"<<temps.maxNum<<endl; //maxNum=new char[strlen(a.maxNum)+1]; //cout<<a.len<<","<<len<<endl; int flag=0; while(j<a.len&&i<temps.len) { t=a.maxNum[j]-'0'; int te=temps.maxNum[i]-'0'; sum=t+te; //cout<<t<<"+"<<te<<":"<<sum<<endl; if(sum>=10) { temps.maxNum[i]=sum%10+'0'; //cout<<temps.maxNum[i]<<endl; temps.maxNum[i+1]=sum/10+temps.maxNum[i+1]; if(i+1>=temps.len) { temps.maxNum[i+1]+='0'; } flag=1; }else{ //cout<<"sum:"<<sum<<endl; flag=0; temps.maxNum[i]=sum+'0'; } //cout<<temps.maxNum[i]<<endl; i++,j++; sum=0; } while(j<a.len) { if(flag==1) { temps.maxNum[i+1]=a.maxNum[j]; i++,j++; }else{ temps.maxNum[i]=a.maxNum[j]; i++,j++; } } if(i>=len) { if(flag==1){ temps.maxNum[i+1]='\0'; temps.len=i+1; } else{ temps.maxNum[i]='\0'; temps.len=i; } } return temps; } /*operator char *() { return maxNum; }*/ CHugeInt & operator +=(int n) { CHugeInt temps(n); *this=this->operator+(temps); //cout<<this->maxNum<<endl; return *this; } friend ostream & operator<<(ostream & os,const CHugeInt & s) { int i=0,j=s.len-1; //cout<<"len:"<<s.len<<endl; //cout<<"输出:"<<s.maxNum<<endl; for(;j>=i;j--) os<<s.maxNum[j]; return os; } friend CHugeInt operator+(int n,CHugeInt s) { CHugeInt temps(n); s=s+temps; return s; } friend CHugeInt operator+(CHugeInt s,int n) { CHugeInt temps(n); s=s+temps; return s; } CHugeInt & operator++() { (*this)+=1; //cout<<"前置自增后:"<<this->maxNum<<endl; return *(this); } CHugeInt operator++(int n) { CHugeInt temps; strcpy(temps.maxNum,maxNum); temps.len=len; this->operator +=(1); //cout<<temps.maxNum<<endl; //cout<<"len:"<<temps.len<<endl; return temps; } }; int main() { char s[210]; int n; while (cin >> s >> n) { CHugeInt a(s); CHugeInt b(n); cout << a + b << endl; cout << n + a << endl; cout << a + n << endl; b += n; cout << ++ b << endl; cout << b++ << endl; cout << b << endl; } return 0; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:PAT1001
- Visual Studio 2019提示不能将const char*类型的值分配到con 2020-06-07
- windows7 + Qt(MSVC2017) + VS2019安装配置 2020-04-25
- 2020年3月21日Benelux Algorithm Programming Contest 2019 2020-03-25
- 2019.3.14解题报告&补题报告 2020-03-22
- Qt5 error LNK2019 无法解析的外部符号的解决办法 2020-02-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash