21xrx.com
2024-09-20 00:32:09 Friday
登录
文章检索 我的文章 写文章
C++ 高精度加法代码实现
2023-07-12 09:20:10 深夜i     --     --
C++ 高精度 加法 代码 实现

C++是一种面向对象的编程语言,它提供了许多强大的编程工具和功能。其中,高精度加法是一种常见的需求,可以用于比较大的数值运算。为了实现高精度加法,需要编写一些特殊的代码。

以下是一个使用C++实现高精度加法的代码:


#include<iostream>

#include<cstring>

#include<algorithm>

using namespace std;

const int MAXN=1000;

struct bign{//定义存储结构体

  int d[MAXN],len;

  bign(){

    memset(d,0,sizeof(d));

    len=0;

  }

};

bign change(char str[]){//转化字符存储进结构体

  bign a;

  a.len=strlen(str);

  for(int i=0;i<a.len;i++){

    a.d[i]=str[a.len-1-i]-'0';

  }

  return a;

}

bign add(bign a,bign b){//高精度加法主要代码

  bign c;

  int carry=0;

  for(int i=0;i<a.len||i<b.len;i++){

    int tmp=a.d[i]+b.d[i]+carry;

    c.d[c.len++]=tmp%10;

    carry=tmp/10;

  }

  if(carry!=0){

    c.d[c.len++]=carry;

  }

  return c;

}

void print(bign a){//输出结果

  for(int i=a.len-1;i>=0;i--){

    cout<<a.d[i];

  }

  cout<<endl;

}

int main(){

  char str1[MAXN],str2[MAXN];

  cin>>str1>>str2;

  bign a=change(str1);

  bign b=change(str2);

  print(add(a,b));

  return 0;

}

在上述代码中,我们首先定义了一个存储结构体bign,包含两个元素:数组d和整数len。数组d存放每一位数字,而整数len表示数组长度。

接下来,我们定义了函数change,将字符数组转化为结构体,并根据字符数组长度进行存储。我们还定义了函数add,实现两个bign结构体的高精度加法。这个函数根据两个结构体数组长度的最大值进行遍历,每一位相加并进位。最后,我们定义了函数print用于输出结果。

在主函数中,我们先输入两个数值,然后调用change函数,将字符数组转化为结构体。接着,我们调用add函数进行高精度加法计算,并调用print函数输出结果。

总之,这段C++代码提供了一种简单而有效的高精度加法实现方法,可以在处理大量数字运算的情况下提供便利。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复