【INT类大整数大减法草稿】2022-7-9

void INT类大整数大减法(int* 数, int* 加, int 长, int 量, bool& 符 = 1)
{
	int x = 1;
	while (--长 >= 0 || --量 >= 0)
	{
		if (数[长] >= 加[量])
			数[长] -= 加[量];
		else
		{
			if(数[长] > 0){数[长] += 1E+9; 数[长] -= 加[量];}
            else {数[长] += 加[量]; 符 = 0;}
			while (数[长 - x] == 0)数[长 - x] = 1E+9 - 1, ++x;//减法必须连续借位
			if(长 - x >= 0)数[长 - x] -= 1;
            else std::cout << "运算超标溢出!";
            x = 1;
		}
	}
}



	//数组每元素整理9位数值,数值第一个元素必须是0用于进位。
	int a[111]{1, 0, 0}, aa[111]{1}, x = 0, c = 3, l = 1; bool 符 = 1;
	INT类大整数大减法(a, aa, c, l, 符);
    if(符==0)std::cout << "-";
	while (x < (c > l ? c : l))
	if (x > 0)std::cout << std::setw(9) << std::setfill('0') << (c > l ? a[x] : aa[x]), ++x;
	else if ((c > l ? a[x] : aa[x]) > 0)std::cout << (c > l ? a[x] : aa[x]), ++x; else ++x;
	std::cout << "\n";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值