程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> c++加法高精度算法的簡略完成

c++加法高精度算法的簡略完成

編輯:關於C++

c++加法高精度算法的簡略完成。本站提示廣大學習愛好者:(c++加法高精度算法的簡略完成)文章只能為提供參考,不一定能成為您想要的結果。以下是c++加法高精度算法的簡略完成正文


c++高精度算法,關於老手來講照樣一年夜挑釁,只需戰勝它,你就開啟了編程的新篇章,算法。

我發的這個代碼其實不是很好,占用內存許多並且運轉時光很長(不跨越1秒),然則很好懂得,很合適老手

高精算法的實質就是把數組編程字符串,然後將字符串像豎式一樣加起來:

a+b高精度算法


#include <iostream>
#include <cmath>
#include <cstring> 
using namespace std;
int main()
{
  char a[100010],b[100010]; 
  cin>>a>>b;//輸出兩個字符串。 
  int c[100010],d[100010],h[100010],n1,n2,i,jw=0;//設三個正整形數組,來寄存兩個加數,一個寄存和。n1n2來寄存字符串a、b的長度。 
  n1=strlen(a);//將字符串a的長度存到n1外面 
  n2=strlen(b);
  for(i=0;i<n1/2;i++) swap(a[i],a[n1-1-i]);//更換加數字符串的次序,如許可使列位對齊,就像加法豎式一樣。 
  for(i=0;i<n2/2;i++) swap(b[i],b[n2-1-i]);//同上 
  for(i=0;i<n1;i++) c[i]=a[i]-'0';//把字符串c轉化到數組a中,個中-‘0'就是轉化方法 
  for(i=0;i<n2;i++) d[i]=b[i]-'0';
  if(n1>n2) swap(n1,n2); //比擬兩個數組長度,選長的做for輪回的前提。
  for(i=0;i<n2;i++) h[i]=c[i]+d[i]; 
  for(i=0;i<n2;i++)
  {
     if(h[i]>=10)
     {
       jw=h[i]/10; //取進位 
       h[i]=h[i]-10;//去失落進位 
       h[i+1]++; 
     } 
     if(jw>0)
     {
       jw=0;//初始化進位 
     }
  }
  if(h[n2]!=0) cout<<h[n2];//斷定最高位能否有進位,有則輸入。 
  for(i=n2-1;i>=0;i--) cout<<h[i];
}

以上就是小編為年夜家帶來的c++加法高精度算法的簡略完成的全體內容了,願望對年夜家有所贊助,多多支撐~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved