zoukankan      html  css  js  c++  java
  • 未完待续的C++大数类BigInteger Anti

    看着JAVA诱人的大数类在ACM中很好用,可是我不会JAVA,感觉为了大数类去学习JAVA太麻烦了,不如写个C++的大数类,目前还未完善,只有部分功能的雏形,因为现在知识有限,即使拿着C++ Primer Plus和刘汝佳的白书各种翻,也才写了这一点,不过目测除了前导零没有什么bug了,刚才拿这个代码A了个题。。然后我打算慢慢完善它。。。

     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 const int MAXLENTH = 10000;
     5 class BigInteger
     6 {
     7     private:
     8     char s[MAXLENTH+10];
     9     int len;
    10     public:
    11     void init(){memset(s, 0, sizeof(s)); len = 1;}
    12     BigInteger(){init();}
    13     friend istream& operator>> (istream &in, BigInteger &x);
    14     friend ostream& operator<< (ostream &out, BigInteger &x);
    15     BigInteger operator= (char *num);
    16     BigInteger operator+ (BigInteger &y);
    17     BigInteger operator+= (BigInteger &y);
    18 };
    19 
    20 istream& operator>> (istream &in, BigInteger &x)
    21 {
    22     x.init();
    23     char str[MAXLENTH];
    24     in >> str;
    25     x = str;
    26     return in;
    27 }
    28 
    29 ostream& operator<< (ostream &out, BigInteger &x)
    30 {
    31     char ans[MAXLENTH];
    32     for(int i = 0; i < x.len; i++)
    33         ans[i] = x.s[x.len-i-1] + '0';
    34     ans[x.len] = '\0';
    35     out << ans;
    36     return out;
    37 }
    38 
    39 BigInteger BigInteger::operator= (char *num)
    40 {
    41     len = strlen(num);
    42     for(int i = 0; i < len; i++)
    43         s[i] = num[len-i-1] - '0';
    44     return *this;
    45 }
    46 
    47 BigInteger BigInteger::operator+ (BigInteger &y)
    48 {
    49     BigInteger z;
    50     for(int i = 0, c = 0; i <= MAXLENTH; i++)
    51     {
    52         int sum = s[i] + y.s[i] + c;
    53         z.s[i] = sum % 10;
    54         c = sum / 10;
    55     }
    56     int j = MAXLENTH;
    57     for( ; j > 0; j--)
    58         if(z.s[j])break;
    59     z.len = j+1;
    60     return z;
    61 }
    62 
    63 BigInteger BigInteger::operator+= (BigInteger &y)
    64 {
    65     *this = *this + y;
    66     return *this;
    67 }
    68 
    69 int main()
    70 {
    71     BigInteger a, b, c;
    72     while(cin >> a >> b)
    73     {
    74         c = a + b;
    75         cout << c << endl;
    76     }
    77     return 0;
    78 }
  • 相关阅读:
    3 面向过程与面向对象进一步比较
    2 类、实例、属性、方法详解
    1 面向对象介绍
    CentOS5、6 NFS的安装配置及mount方法
    js 冒泡 捕获
    js定义类或对象
    new Option()——实现时间联动
    js闭包(转)
    (转)大型网站系统架构的演化
    30款最好的 Bootstrap 3.0 免费主题和模板
  • 原文地址:https://www.cnblogs.com/wolfred7464/p/3041346.html
Copyright © 2011-2022 走看看