大数相减-c++

/*题目:输入两行字符串正整数,第一行是被减数,第二行是减数,输出第一行减去第二行的结
/果。
/大数一般会超出长整型的范围,所以用字符串存储数据然后按照减法运算法则实现就成了。
/string类成员函数功能强大!
*/

#include <iostream>
#include<string>
using namespace std;

int compare(string &num1,string &num2)
{
    int l1 = num1.size();
    int l2 = num2.size();
    if(l1>l2)
        return 1;
    else if(l1<l2)
        return 2;
    else 
        for(int i=0;i<l1;i++)
          {
            if(num1[i]>num2[i])
                return 1;
            else if(num1[i]<num2[i])
                return 2;
           } 
    return 0;
}

string minus(string &num1,string &num2)
{
    //num1>nun2
    int len1= num1.size();
    int len2= num2.size();
    int flag = 0;
    int temp=0;
    string result;
    for(int i=0;i<len2;i++)
    {
        temp=num1[len1-1-i]-num2[len2-1-i]-flag;
        if(temp<0){
            flag=1;
            temp = temp+10;
            result.push_back(temp+'0');
        }
        else {
            flag=0;
            result.push_back(temp+'0');     
        }
    }
    for(int i=len1-len2-1;i>=0;i--)
    {
        temp = num1[i]-'0'-flag;
        if(temp<0)
        {
            flag =1;
            result.push_back(temp+10+'0');      
        }
        else
        {
            flag=0;
            result.push_back(temp+'0');     

        }
    }
    int len3 = result.size();
    int num=0;
    for(int i=0;i<len3;i++)
        if(result[i]==0)
            num++;
        else
            break;
    if(num>0)
        result.erase(len3-num);
    num = result.size();
    char c;
    for(int i=0;i<num/2;i++)
    {
        c = result[i];
        result[i]=result[num-1-i];
        result[num-1-i] = c;
    }


    return result;


}
void main()
{
    string num1,num2;
    cin>>num1>>num2;
    int flag=0;
    string result;
    flag = compare(num1,num2);
    if(flag==0)
        {
        result='0';
    }
    if(flag==1)
        result = minus(num1,num2);
    if(flag==2){
        result.push_back('-');
        result.append(minus(num2,num1)); 
    }
    cout<<result;
    return ;
}

相关文章

自1998年我国取消了福利分房的政策后,房地产市场迅速开展蓬...
文章目录获取数据查看数据结构获取数据下载数据可以直接通过...
网上商城系统MySql数据库设计
26个来源的气象数据获取代码
在进入21世纪以来,中国电信业告别了20世纪最后阶段的高速发...