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=(换行),但是我的程序输出的结果不对
请问应该怎么改一下?谢谢! 展开
(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=(换行),但是我的程序输出的结果不对
请问应该怎么改一下?谢谢! 展开
1个回答
展开全部
#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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询