C++ 整数集合运算 求高手帮忙纠错

编写一个程序,通过重载运算符"+"、"-",实现一个整数集合的基本运算:(1)int1+int2两个整数集合的并运算(2)int1-int2两个整数集合的差运算输入:52... 编写一个程序,通过重载运算符"+"、"-",实现一个整数集合的基本运算:
(1) int1+int2 两个整数集合的并运算
(2) int1-int2 两个整数集合的差运算
输入:5      
  2 5 66 1 79
  3
  2 66 28
结果:int1+int2=2 5 66 1 79 28
 int1-int2=5 1 79
注:第1、3行数为集合元素个数,第2、4行为集合中各个元素

#include <iostream>
using namespace std;
class jihe
{
private:
int n;
int a[50];
public:
void set()
{
int i;
cin>>n;
for(i=0;i<n;i++) cin>>a[i];
}
friend jihe operator + (jihe &t1,jihe &t2);
friend jihe operator - (jihe &t1,jihe &t2);
void show1()
{
cout<<"int1+int2="<<a[0];
for(int i=1;i<n;i++) cout<<' '<<a[i];
cout<<endl;
}
void show2()
{
cout<<"int1-int2="<<a[0];
for(int i=1;i<n;i++) cout<<' '<<a[i];
cout<<endl;
}
};

int main()
{
jihe t1,t2,t3,t4;
t1.set();
t2.set();
t3=t1+t2;
t4=t1-t2;
t3.show1();
t4.show2();
return 0;
}

jihe operator + (jihe &t1,jihe &t2)
{
int i,j,flag=0;
for(i=0;i<t2.n;i++,flag=0)
{
for(j=0;j<t1.n;j++)
{
if(t2.a[i]==t1.a[j])
{
flag=1;
break;
}
}
if(flag==0)
{
t1.a[t1.n]=t2.a[i];
t1.n=t1.n+1;
}
}
return t1;
}

jihe operator - (jihe &t1,jihe &t2)
{
int i,j,k;
for(i=0;i<t1.n;i++)
{
for(j=0;j<t2.n;j++)
{
if(t1.a[i]==t2.a[j])
{
for(k=i;k<t1.n;k++)
t1.a[k]=t1.a[k+1];
t1.n=t1.n-1;
i--;
}
}
}
return t1;
}

减号的重载个别值的结果有问题,比如输入
6
23 44 67 88 99 100
6
23 44 67 88 99 100


0
4
22 33 44 55

结果应该是int1-int2=(换行),但是我的程序输出的结果不对

请问应该怎么改一下?谢谢!
展开
 我来答
kaixingui2012
推荐于2016-05-01 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6380万
展开全部
#include <iostream.h>
//using namespace std;
class jihe
{
private:
int n;
int a[50];
public:
void set()
{
int i;
cin>>n;
for(i=0;i<n;i++) 
cin>>a[i];
}
friend jihe operator + (jihe &t1,jihe &t2);
friend jihe operator - (jihe &t1,jihe &t2);
void show1()
{
cout<<"int1+int2=";
if ( n>0 )
cout <<a[0] ;
for(int i=1;i<n;i++) cout<<' '<<a[i];
cout<<endl;
}
void show2()
{
cout<<"int1-int2=";
if ( n>0 )
cout <<a[0] ;
for(int i=1;i<n;i++) cout<<' '<<a[i];
cout<<endl;
}
}; 

int main()
{
jihe t1,t2,t3,t4;
t1.set();
t2.set();
t3=t1+t2;
t4=t1-t2;
t3.show1();
t4.show2();
return 0;
}

jihe operator + (jihe &t1,jihe &t2)
{
int i,j,flag=0;
for(i=0;i<t2.n;i++,flag=0)
{
for(j=0;j<t1.n;j++)
{
if(t2.a[i]==t1.a[j])
{
flag=1;
break;
}
}
if(flag==0)
{
t1.a[t1.n]=t2.a[i];
t1.n=t1.n+1;
}
}
return t1;
}

jihe operator - (jihe &t1,jihe &t2)
{
int i,j,k;
for(i=0;i<t1.n;i++)
{
for(j=0;j<t2.n;j++)
{
if(t1.a[i]==t2.a[j])
{
for(k=i;k<t1.n;k++)
t1.a[k]=t1.a[k+1];
t1.n=t1.n-1;
i--;
break;
}
}
}
return t1;
}
追问
输出结果的最后一个数和回车之间多了一个空格,请问应该怎么解决
追答
good luck
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式