• 今天看刘汝佳的书,用面向对象的重载用算符打大数,自己也打了篇


    #include <iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    using namespace std;
    #define maxn 1002
    struct bign {
    	int len,s[maxn];
    bign ()
    {
    	memset(s,0,sizeof(s));
    	len=1;
    }
     string str() const {
        string res = "";
        for(int i = 0; i < len; i++)
    	res = (char)(s[i] + '0') + res;
        if(res == "")
    	res = "0";
        //cout<<"string str() const
    "<<endl;
        return res;
      }
    /*bign operator + (const bign & d)
    {
    
    	bign c;
    }*/
    bign operator + (const bign& b) const
      {
        bign c;
        c.len = 0;
        for(int i = 0, g = 0; g || i < max(len, b.len); i++)
            {
          int x = g;
          if(i < len)
    	  x += s[i];
          if(i < b.len)
    	  x += b.s[i];
          c.s[c.len++] = x % 10;
          g = x / 10;
        }
       // cout<<" bign operator + (const bign& b) const
    "<<endl;
        return c;
      }
    
    
    
    bign operator = (const char *num )
    {
    	int i;
    	len=strlen(num);
    	for(i=0;i<len;i++)
    	{
    		s[i]=num[len-1-i]-'0';
    	}
    	return *this;
    }
    
    
    };
    istream & operator >> (istream & in,bign & x)
    {
    	string s;
    	in>>s;
    	x=s.c_str();
    	return in;
    }
    ostream& operator << (ostream &out, const bign& x) {
      out << x.str();
      //cout<<"ostream& operator << (ostream &out, const bign& x)
    "<<endl;
      return out;
    }
    
    
    
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    int main(int argc, char** argv) {
    	int t,k=1,z;bign a,b,c;
    
    	cin >>t;
    	z=t;
    
    		while(t--)
    		{
    			cin>>a>>b;//简单的调用自己写的函数
    			c=a+b;//加法是将左边的对象作为引用传入到重载运算符+中,这儿的=并没有使用重载用算符,只需要系统的足以
    			//cout<<c;
    			cout << "Case "<<k<<":"<<endl;
    			if(k!=z)
      cout <<a<<" + "<<b<<" = "<< c << endl<<endl;
      else cout <<a<<" + "<<b<<" = "<< c << endl;
      k=k+1;//输出流也是自己写的重载函数
    		}
    
    
    
    
    	return 0;
    }
    

      

  • 相关阅读:
    git和svn
    [Luogu] P1144 最短路计数
    [Luogu] CF280C Game on Tree
    LCA的一种优秀实现方式(倍增+dfs序)
    [Luogu] P1131 [ZJOI2007]时态同步
    [Luogu] P2285 [HNOI2004]打鼹鼠
    背包相关问题总结
    【笔记】模拟梯度下降法的实现
    【笔记】梯度下降法的简单了解
    【笔记】线性回归的可解性和更多思考及线性回归总结
  • 原文地址:https://www.cnblogs.com/41412179guo/p/4573644.html
Copyright © 2020-2023  润新知