zoukankan      html  css  js  c++  java
  • 用c++实现高精度加法

    c++实习高精度加法

    最近遇到一个c++实现高精度加法的问题,高精度问题往往十复杂但发现其中的规律后发现并没有那么复杂,这里我实现了一个整数的高精度加法,主要需要注意以下几点:

    1:将所需输入的数据以字符数组的形式输入,建立字符数组,建立相应的整数数组,然后一一映射,以此来实现数据的输入,需要注意的是,当实现字符向数字映射时,应该减去相应的ASCII偏移值,即48。

    2:为了模拟我们在纸上手算的进位模拟运算,我们将字符数组反向填入整数数组,上图的后几行代码实现了这个操作。

     

    3:实现进位加法,这是整个代码的核心部分,需要读者细细体会,认真揣摩,往往需要反复思考,容易遗忘

    4:反向输出数据。因为我们的加法是将数组反置,然后由左到右想加的,加完后,个数位在左边,所以,需要反向输出

     

    以下是全部代码:

        #include<iostream>  
        #include<cstdio>  
        #include<cstring>  
        using namespace std;  
        int main()  
        {  
            char a1[100],b1[100];  
            int a[100],b[100],c[100];  
            int a1_len,b1_len,lenc,i,x;  
            memset(a,0,sizeof(a));   
            memset(b,0,sizeof(b));   
            memset(c,0,sizeof(c));  
              
            gets(a1);   
            gets(b1); //输入加数与被加数   
               
            a1_len=strlen(a1);   
            b1_len=strlen(b1);   
           
            for (i=0;i<=a1_len-1;i++)   
            {  
                a[a1_len-i]=a1[i]-48; //将操作数放入a数组    
            }  
               
            for (i=0;i<=b1_len-1;i++)  
            {  
                b[b1_len-i]=b1[i]-48; //将操作数放入b数组   
            }   
            
          
           lenc =1;   
           x=0;   
              
           while(lenc <=a1_len || lenc <=b1_len)   
           {   
                c[lenc]=a[lenc]+b[lenc]+x; //两数相加    
                x=c[lenc]/10;   //要进的位  
                c[lenc]=c[lenc]%10;     //进位后的数  
                lenc++;     //数组下标加1  
            }  
              
            c[lenc]=x;  
            if (c[lenc]==0)  
            {  
                lenc--; //处理最高进位   
            }   
              
            for (i=lenc;i>=1;i--)  
            {  
                cout<<c[i]; //输出结果      
            }  
            cout<<endl;  
              
            return 0;  
        }  
    每一篇博客,不为别的,证明我的成长。每一次发文,不为别的,证明我严阵以待。蜗牛爬得很慢,却终有一日登上参天大树。因为它热爱。
  • 相关阅读:
    Two Sum II
    Subarray Sum
    Intersection of Two Arrays
    Reorder List
    Convert Sorted List to Binary Search Tree
    Remove Duplicates from Sorted List II
    Partition List
    Linked List Cycle II
    Sort List
    struts2结果跳转和参数获取
  • 原文地址:https://www.cnblogs.com/agui521/p/6917439.html
Copyright © 2011-2022 走看看