zoukankan      html  css  js  c++  java
  • 感动要哭 撸了一个半小时的重载预算符高精

    撸了一个半小时代码,没玩守望(垃圾游戏毁我青春五个金牌都带不起队友)最后编译出312个错误。吓我,然而改了几个地方就直接过了直接过了直接过了,目前还是不明白ostream,istream的用处,上网才搞定的。只写了加与乘还有比较。其他后面加吧。减法跟除都很恶心。。。。

    代码如下:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #define maxn 5000
     6 using namespace std;
     7 struct SPH{
     8     int len,s[maxn];
     9     SPH(){
    10         memset(s,0,sizeof(s));
    11         len=1;
    12     }
    13     SPH operator = (const char* num)
    14     {
    15         len=strlen(num);
    16         for(int i=0;i<len;++i) s[i]=num[len-i-1]-48;
    17         return *this;
    18     }
    19     SPH operator=(const int num){
    20         char a[maxn];
    21         sprintf(a,"%d",num);
    22         *this=a;
    23         return *this;
    24     }
    25     SPH (const int num){ *this=num;
    26     }
    27     SPH (const char * num){ *this=num;
    28     }
    29     SPH operator+(const SPH & a)
    30     {
    31         SPH c;
    32         c.len=max(len,a.len)+1;
    33         int x=0;
    34         for(int i=0;i<c.len;++i)
    35         {
    36             c.s[i]=s[i]+a.s[i]+x;
    37             x=c.s[i]/10;
    38             c.s[i]=c.s[i]%10;
    39         }
    40         if(c.s[c.len-1]==0) --c.len;
    41         return c;
    42     }
    43     SPH operator+=(const SPH & a){
    44         *this=*this+a;
    45         return *this;
    46     }
    47     SPH operator*(const SPH & x){
    48         SPH c;
    49         c.len=len+x.len;
    50         for(int i=0;i<len;++i){
    51             for(int j=0;j<x.len;++j){
    52                 c.s[i+j]+=s[i]*x.s[j];
    53                 c.s[i+j+1]+=c.s[i+j]/10;
    54                 c.s[i+j]%=10;
    55             }
    56             
    57         }
    58         if(c.len-1) --c.len;
    59         return c;    }
    60     SPH operator *=(const SPH & a){
    61         *this=*this * a;
    62         return *this;
    63     }
    64     bool operator < (const SPH & x) const{
    65     if(len !=x.len) return len<x.len;
    66     for(int i=len-1;i>=0;i--){
    67         if(s[i]!=x.s[i]) return s[i]<x.s[i];
    68     }
    69     return false;}
    70     bool operator >(const SPH & x) const {return x<*this;}
    71     bool operator <=(const SPH & x) const {return !(x<*this);}
    72     bool operator >=(const SPH & x) const {return !(x>*this);}
    73     bool operator ==(const SPH & x) const {return !(x<*this||x>*this);}
    74     bool operator !=(const SPH & x) const {return x<*this||x>*this;}
    75     };
    76     ostream& operator << (ostream &out,const SPH& x){
    77         for(int i=x.len-1;i>=0;i--)
    78         cout<<x.s[i];
    79         return out;
    80     }
    81     istream& operator >> (istream &in,SPH& x)
    82     {
    83         char num[maxn];
    84         in>>num;
    85         x=num;
    86         return in;
    87     }
    88 
    89 int main()
    90 {
    91     SPH n,m,sum;
    92     cin>>n>>m;
    93     sum=n+m;
    94     cout<<sum<<" ";
    95     sum=n*m;
    96     cout<<sum;
    97     return 0;
    98 }
  • 相关阅读:
    UE 实现英雄联盟手游 备注名文本超框自动截断
    Qt使用msvc编译MySQL驱动
    Qt5打包发布的大小也太坑爹了
    查看迅雷等资源共享工具正在上传的文件
    bugfree安装过程和配置
    文件上传后台和前台代码(文件下载也是)
    SqlHelper.cs的介绍
    站点添加联系QQ留言(阿里巴巴应该也类似)
    http://blog.csdn.net/songlipeng2003/article/details/1513456
    转(学习中)
  • 原文地址:https://www.cnblogs.com/srpihot/p/6379910.html
Copyright © 2011-2022 走看看