不行啊
我在给控件设制变量时没有这些
应该怎么做呢
比如下面这个程序,我要用MFC做个界面。应该怎么做。
能不能说一下。谢谢
#include <iostream>
using namespace std;
/************************************************/
//类名:Set =================================//
//功能:计算两个集合的交,并,差集 ================//
//版权:中国地质大学(武汉) XJJ ==============//
//版本号: 1.0 2006/10/22 ===================//
/************************************************/
class Set
{
public:
Set(){}
Set(int *arr,int m)
{
m_array=arr;
m_max=m;
}
Set(Set &);
int find(int);
void remove(int);
friend ostream &operator << (ostream &,Set );
friend istream &operator >> (istream &,Set &);
Set operator * (Set);
Set operator + (Set);
Set operator - (Set);
private:
int * m_array;
int m_max;
};
//拷贝构造函数,因为某些计算会改变对象内存的值,故要此函数//
Set::Set(Set &a)
{
m_max=a.m_max;
m_array=new int[100];
for(int i=0;i<a.m_max;i++)
{
m_array[i]=a.m_array[i];
}
}
//******************查找集合中是否有此元素***************//
int Set::find(int ch)
{
for(int i=0;i<m_max;i++)
{
if(ch==m_array[i])
{
return i;
break;
}
}
return -1;
}
//*******************移出集合中的一个元素***************//
void Set::remove(int n)
{
for(int i=0;i<m_max;i++)
{
if(m_array[i]==n)
{
for(int j=i;j<m_max;j++)
{
m_array[j]=m_array[j+1];
}
}
}
}
//********************重载输入符号***********************//
istream &operator >> (istream &in,Set &b)
{
int element,i;
for(i=0;i<b.m_max;i++)
{
in>>element;
if(b.find(element)==-1 )
{
b.m_array[i]=element;
}
else
{
cout<<"此元素已有,请重新输入: ";
i--;
}
}
return in;
}
//*********************重载输出符号**********************//
ostream &operator << (ostream &out,Set b)
{
for(int i=0;i<b.m_max;i++)
{
out<<b.m_array[i]<<" ";
}
return out;
}
//*********************重载乘号,计算交集******************//
Set Set::operator * (Set b)
{
for(int j=0;j<b.m_max;j++)
{
if(find(b.m_array[j])==-1)
{
b.remove(b.m_array[j]);
b.m_max--;
j--;
}
}
return b;
}
//******************重载加号,计算并集*********************//
Set Set::operator +(Set b)
{
//================相同的元素只留一个===============//
for(int j=0;j<m_max;j++)
{
if(b.find(m_array[j])!=-1)
{
remove(m_array[j]);
m_max--;
j--;
}
}
//================B中没有的元素加到B中============//
int i=b.m_max , j=0;
b.m_max=b.m_max+m_max;
for(;i<b.m_max; i++,j++)
{
b.m_array[i]=m_array[j];
}
return b;
}
//===============================================//
//****************重载减号,计算差集**************//
Set Set::operator - (Set b)
{
for(int j=0;j<b.m_max;j++)
{
if(find(b.m_array[j])!=-1)
{
b.remove(b.m_array[j]);
b.m_max--;
j--;
}
}
return b;
}
void main()
{
int a[100],b[100];
Set aa(a,5),bb(b,5);
cin>>aa;
cin>>bb;
Set cc(bb);
Set dd(aa);
cout<<"交集为: "<<dd*cc<<endl;
cout<<"并集为: "<<dd+cc<<endl;
cout<<"差集为: "<<aa-bb<<endl;
cout<<"差集为: "<<bb-aa<<endl;
}