1. 程式人生 > 實用技巧 >高精度減法 c++

高精度減法 c++

高精度減法 c++

高精度減法

包含判斷負數。程式碼如下:

#include<iostream>
#include<cstring>
using namespace std;
int main(){<!-- -->
  char a1[1000],b1[1000];
  int a[1000],b[1000],c[1000],lena,lenb,lenc;
  bool t=true;
  cin>>a1>>b1;
  memset(a,0,sizeof(a)); 
  memset(b,0,sizeof(b)); 
  memset(c,0,sizeof(c)); 
  lena=strlen(a1);
  lenb=strlen(b1);
  if(lena<lenb)
  {<!-- -->
    cout<<"-";
    swap(a1,b1);
    swap(lena,lenb);
  }
  else if(lena==lenb)
  {<!-- -->
    for(int i=0;i<lena;i++)
 {<!-- -->
      if(a1[i]<b1[i])
   {<!-- -->
        cout<<"-";
        t=false;
        break;
      }
    }
  }
  for(int i=0;i<lena;i++)
    a[lena-i]=a1[i]-48;
  for(int i=0;i<lenb;i++)
    b[lenb-i]=b1[i]-48;
  lenc=1;
  int p=1,q=1;
  do{<!-- -->
    c[lenc]=a[p]-b[q];
    if(c[lenc]<0)
 {<!-- -->
      a[p+1]--;
      c[lenc]+=10;
    }
    p++;q++;lenc++;
  }while(lena>=p);
  for(int i=lenc-1;i>=1;i--)
    cout<<c[i];
  return 0;
}