加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数相减-c++

发布时间:2021-02-24 07:16:56 所属栏目:大数据 来源:网络整理
导读:/*题目:输入两行字符串正整数,第一行是被减数,第二行是减数,输出第一行减去第二行的结 /果。 /大数一般会超出长整型的范围,所以用字符串存储数据然后按照减法运算法则实现就成了。 /string类成员函数功能强大! */ #include iostream #includestring us

/*题目:输入两行字符串正整数,第一行是被减数,第二行是减数,输出第一行减去第二行的结
/果。
/大数一般会超出长整型的范围,所以用字符串存储数据然后按照减法运算法则实现就成了。
/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 ;
}

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读