| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 547 人关注过本帖
标题:大数加法
只看楼主 加入收藏
一个人的孤独
Rank: 2
等 级:论坛游民
帖 子:45
专家分:56
注 册:2012-10-15
结帖率:87.5%
收藏
 问题点数:0 回复次数:1 
大数加法
//大数加法
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
go:    int i=0,j=0,cn1,cn2,num=0;
    int     *a=new int[100];
    int  *b=new int[100];
    int    answer[100]={0};
    char *numb1=new char[100];
    char *numb2=new char[100];
    int sum(int x,int y);
    cin>>numb1;
    cn1=strlen(numb1);
    cin>>numb2;
    cn2=strlen(numb2);
    for(i=0;i<cn1;i++)
    {   
        a[i]=numb1[i]-'0';
    }
    for(i=0,j=cn1-1;i<j;i++,j--)
    {
        int t=a[i];
        a[i]=a[j];
        a[j]=t;
    }
    for(i=0;i<cn1;i++)cout<<a[i];
    cout<<endl;
    for(i=0;i<cn2;i++)
    {        
        b[i]=numb2[i]-'0';
    }
    for(i=0,j=cn2-1;i<j;i++,j--)
    {
        int t=b[i];
        b[i]=b[j];
        b[j]=t;
    }
    for(i=0;i<cn2;i++)cout<<b[i];
    cout<<endl;
    cout<<setw(cn2+1)        <<numb1<<endl;
    cout<<"+"<<setw(cn1-1)    <<numb2<<endl;
    cout<<"-----------------------------"<<"\n"<<"=";
    if(cn1>=cn2)
    {
        for(i=0;i<cn2;i++)
        {
            if((answer[i]+sum(a[i],b[i]))>=10)
            {
                answer[i+1]=1;
                answer[i]=(answer[i]+sum(a[i],b[i]))%10;
            }
            else
            {
                answer[i]=answer[i]+sum(a[i],b[i]);
            }
        }
        for(i=cn2;i<cn1;i++)
        {
            if((answer[i]+a[i])>=10)
            {
                answer[i+1]=1;
                answer[i]=(answer[i]+a[i])%10;
            }
            else
            {
                answer[i]+=a[i];
            }
        }
        if(cn1==cn2)cn1++;
        for(i=cn1-1;i>=0;i--)
        {
            cout<<answer[i];
        }
        cout<<endl;
    }
    if(cn1<cn2)
    {
        for(i=0;i<cn1;i++)
        {
            if((answer[i]+sum(a[i],b[i]))>=10)
            {
                answer[i+1]=1;
                answer[i]=(answer[i]+sum(a[i],b[i]))%10;
            }
            else
            {
                answer[i]=answer[i]+sum(a[i],b[i]);
            }
        }
        for(i=cn1;i<cn2;i++)
        {
            if((answer[i]+b[i])>=10)
            {
                answer[i+1]=1;
                answer[i]=(answer[i]+b[j])%10;
            }
            else
            {
                answer[i]+=b[i];
            }
        }
        for(i=cn2-1;i>=0;i--)
        {
            cout<<answer[i];
        }
        cout<<endl;   
    }
    system("pause");
    goto go;
    return 0;
}
int sum(int x,int y)
{
    return x+y;
}
搜索更多相关主题的帖子: include 
2012-12-28 16:51
holy__shit
Rank: 2
等 级:论坛游民
帖 子:21
专家分:55
注 册:2013-8-23
收藏
得分:0 
哦!

羁绊太多,只会迷失自我!
2013-08-26 20:00
快速回复:大数加法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022717 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved