蒟蒻求助:为什么重载运算符号在DEVC++出错?
查看原帖
蒟蒻求助:为什么重载运算符号在DEVC++出错?
327813
__lyh__楼主2021/7/10 18:23

用的高精(结构体封装),在洛谷上AC,本地却运行不了

#include<bits/stdc++.h>
using namespace std;
struct bigint
{
	int len,a[100000];
	bigint(int x=0)
	{
		memset(a,0,sizeof(a));
		len=1;
		for(;x;len++)
		{
			a[len]=x%10;x/=10;
		}
		len--;
	}
	int &operator[](int i)
	{
		return a[i];
	}
	void zhanp(int x)
	{
		len=x;
		for(int i=1;i<=len;i++)
		{
			a[i+1]+=a[i]/10;
			a[i]%=10;
		}
		while(!a[len]) len--;
	}
	bigint print()
	{
		for(int i=max(1,len);i>=1;i--)
		{
			printf("%d",a[i]);
		}
	}
};
bigint read(bigint a)
{
	int len=0;char ch[100000];
	cin>>ch;
	len=strlen(ch);
	for(int i=1;i<=len;i++)
	{
		a[i]=ch[len-i]-48;
	}
	a.len=len;
	return a;
}
bigint operator+(bigint a,bigint b)//重载 
{
	bigint c;
	int len=max(a.len,b.len);
	for(int i=1;i<=len;i++)
	{
		c[i]+=a[i]+b[i];
	}
	c.zhanp(len+1);
	return c;
}
/*bigint operator*(bigint a,bigint b)
{
	bigint c(0);
	int lena=a.len,lenb=b.len;
	for(int i=1;i<=lena;i++)
	for(int j=1;j<=lenb;j++)
	{
		c[i+j-1]+=a[i]*b[i];
	}
	c.zhanp(lena+lenb);
	return c;
}*/
int main()
{
	bigint a=read(a);bigint b=read(b);
	a=a+b;//这一句删去后程序就能正常运行 
	a.print();
}

把倒数第三行删去程序就能正常运行,加上后连输入都输不进去。。。

是DEVC++的问题吗?

(程序参考了深基P1009P1009的代码)

2021/7/10 18:23
加载中...