重载运算符,c++,求改
查看原帖
重载运算符,c++,求改
1376963
niumiao123楼主2024/7/16 16:56

算不了负数,代码如下

#include<bits/stdc++.h>
using namespace std;
int mx;
const int N = 1e3 + 50;
struct BigNum
{
	int a[N], len;
	void init()
	{
		len = 0;
		memset(a,0,sizeof a);
	}
	BigNum operator + (BigNum b)
	{
		BigNum c; c.init();
		mx=max(len,b.len);
		for(int i = 0;i < mx; ++ i){
			c.a[i]=a[i]+b.a[i];
			c.a[i + 1] += c.a[i] / 10;
			c.a[i] %= 10;
		}
		return c;
	}
	void print()
	{
		int u=1;
		for(int i = mx+1;i >= 0; -- i){
			if(a[i]!=0){
				u=0;
			} 
			if(u==0){
			cout<<a[i];
			}
		}
	}
}x; 
string s,s1;
int main()
{	
	std::ios::sync_with_stdio(false);
	cin >> s >> s1;
	if(s[0]=='0'&&s1[0]=='0'){
		cout<<0;
		return 0;
	}
	BigNum x,y,c; 
	x.init();y.init();
	x.len = s.size();
	y.len = s1.size();
	for(int i = 0;i < x.len;++ i)
		x.a[i] = s[s.size()-1-i] - '0';
	for(int i = 0;i < y.len;++ i)
		y.a[i] = s1[s1.size()-1-i] - '0';
	(x+y).print();
	return 0;
}
2024/7/16 16:56
加载中...