求高手帮我解释解释这个代码有什么功能(是干什么用的)分析一下结构,最好能逐行注释一下呀 谢了。。
#include<iostream.h>constintmax=100;classset{intlist[max];intpc;public:set(){pc=0;cou...
#include<iostream.h>
const int max=100;
class set
{
int list[max];
int pc;
public:
set()
{
pc=0;
cout<<"Constructor called!"<<endl;
}
set(int a[],int size)
{
if(size>=100)
pc=100;
else
pc=size;
for(int i=0;i<pc;i++)
list[i]=a[i];
}
set(set& s)
{
pc=s.pc;
for(int i=0;i<pc;i++)
list[i]=s.list[i];
cout<<"Copy-initialization Constructor called!"<<endl;
}
void empty(){pc=0;}
bool isempty()
{
if(pc==0)
return true;
else
return false;
}
bool ismemberof(int n)
{
for(int i=0;i<pc;i++)
if(list[i]==n)
return true;
return false;
}
void add(int n)
{
if(ismemberof(n))
{
cout<<"The set has included the number!";
return ;
}
else if(pc>max)
{
cout<<"The set is full.DO NOT add a number!";
return;
}
else
list[pc++]=n;
}
set intersection(set& SET)
{
int a[100],size=0;
for(int i=0;i<pc;i++)
for(int j=0;j<SET.pc;j++)
if(list[i]==SET.list[j])
{
a[size++]=list[i];
break;
}
return set(a,size);
}
void print()
{
cout<<"{";
for(int i=0;i<pc-1;i++)
cout<<list[i]<<",";
if(pc>0)
cout<<list[pc-1];
cout<<"}"<<endl;
}
};
void main()
{
set A;
if(A.isempty())
cout<<"set \'A\' is empty."<<endl;
else
cout<<"set \'A\' is not empty."<<endl;
cout<<"A:";A.print();
for(int i=1;i<10;i++)
A.add(i);
cout<<"A:";A.print();
set B;
for(i=1;i<6;i++)
B.add(i);
cout<<"B:";B.print();
B.empty();
cout<<"B:";B.print();
for(i=8;i<15;i++)
B.add(i);
cout<<"B:";B.print();
set C(B);
cout<<"C:";C.print();
cout<<"A交C:";A.intersection(C).print();
} 展开
const int max=100;
class set
{
int list[max];
int pc;
public:
set()
{
pc=0;
cout<<"Constructor called!"<<endl;
}
set(int a[],int size)
{
if(size>=100)
pc=100;
else
pc=size;
for(int i=0;i<pc;i++)
list[i]=a[i];
}
set(set& s)
{
pc=s.pc;
for(int i=0;i<pc;i++)
list[i]=s.list[i];
cout<<"Copy-initialization Constructor called!"<<endl;
}
void empty(){pc=0;}
bool isempty()
{
if(pc==0)
return true;
else
return false;
}
bool ismemberof(int n)
{
for(int i=0;i<pc;i++)
if(list[i]==n)
return true;
return false;
}
void add(int n)
{
if(ismemberof(n))
{
cout<<"The set has included the number!";
return ;
}
else if(pc>max)
{
cout<<"The set is full.DO NOT add a number!";
return;
}
else
list[pc++]=n;
}
set intersection(set& SET)
{
int a[100],size=0;
for(int i=0;i<pc;i++)
for(int j=0;j<SET.pc;j++)
if(list[i]==SET.list[j])
{
a[size++]=list[i];
break;
}
return set(a,size);
}
void print()
{
cout<<"{";
for(int i=0;i<pc-1;i++)
cout<<list[i]<<",";
if(pc>0)
cout<<list[pc-1];
cout<<"}"<<endl;
}
};
void main()
{
set A;
if(A.isempty())
cout<<"set \'A\' is empty."<<endl;
else
cout<<"set \'A\' is not empty."<<endl;
cout<<"A:";A.print();
for(int i=1;i<10;i++)
A.add(i);
cout<<"A:";A.print();
set B;
for(i=1;i<6;i++)
B.add(i);
cout<<"B:";B.print();
B.empty();
cout<<"B:";B.print();
for(i=8;i<15;i++)
B.add(i);
cout<<"B:";B.print();
set C(B);
cout<<"C:";C.print();
cout<<"A交C:";A.intersection(C).print();
} 展开
1个回答
展开全部
只解释成员函数的作用吧,主函数的对象都是简单的调用成员函数。。。
set() //不带参数构造函数
{
pc=0;
cout<<"Constructor called!"<<endl;
}
set(int a[],int size) //带参数的构造函数,要求不管如
// 何pc不能大于100
{
if(size>=100)
pc=100;
else
pc=size;
for(int i=0;i<pc;i++)
list[i]=a[i];
}
set(set& s) //无返回值得拷贝构造函数,对象的值全部赋值过去
{
pc=s.pc;
for(int i=0;i<pc;i++)
list[i]=s.list[i];
cout<<"Copy-initialization Constructor called!"<<endl;
}
void empty(){pc=0;}
bool isempty()
{
if(pc==0)
return true;
else
return false;
}
bool ismemberof(int n) //判断对象的成员list[]中是否有元素n
{
for(int i=0;i<pc;i++)
if(list[i]==n)
return true;
return false;
}
void add(int n)//给对象的成员list[]添加元素n
{
if(ismemberof(n))//若已存在
{
cout<<"The set has included the number!";
return ;
}
else if(pc>max)//若list[]中元素已达到上限100,则已满,不能添加了。
{
cout<<"The set is full.DO NOT add a number!";
return;
}
else//可以添加
list[pc++]=n;
}
set intersection(set& SET) //将两个对象的list[]中的相同元素放到另一个对象(接收的)的list[]中去
{
int a[100],size=0;
for(int i=0;i<pc;i++)
for(int j=0;j<SET.pc;j++)
if(list[i]==SET.list[j])//若俩元素相同
{
a[size++]=list[i];
break;
}
return set(a,size);
}
void print()//输出对象的成员值
{
cout<<"{";
for(int i=0;i<pc-1;i++)
cout<<list[i]<<",";
if(pc>0)
cout<<list[pc-1];
cout<<"}"<<endl;
}
set() //不带参数构造函数
{
pc=0;
cout<<"Constructor called!"<<endl;
}
set(int a[],int size) //带参数的构造函数,要求不管如
// 何pc不能大于100
{
if(size>=100)
pc=100;
else
pc=size;
for(int i=0;i<pc;i++)
list[i]=a[i];
}
set(set& s) //无返回值得拷贝构造函数,对象的值全部赋值过去
{
pc=s.pc;
for(int i=0;i<pc;i++)
list[i]=s.list[i];
cout<<"Copy-initialization Constructor called!"<<endl;
}
void empty(){pc=0;}
bool isempty()
{
if(pc==0)
return true;
else
return false;
}
bool ismemberof(int n) //判断对象的成员list[]中是否有元素n
{
for(int i=0;i<pc;i++)
if(list[i]==n)
return true;
return false;
}
void add(int n)//给对象的成员list[]添加元素n
{
if(ismemberof(n))//若已存在
{
cout<<"The set has included the number!";
return ;
}
else if(pc>max)//若list[]中元素已达到上限100,则已满,不能添加了。
{
cout<<"The set is full.DO NOT add a number!";
return;
}
else//可以添加
list[pc++]=n;
}
set intersection(set& SET) //将两个对象的list[]中的相同元素放到另一个对象(接收的)的list[]中去
{
int a[100],size=0;
for(int i=0;i<pc;i++)
for(int j=0;j<SET.pc;j++)
if(list[i]==SET.list[j])//若俩元素相同
{
a[size++]=list[i];
break;
}
return set(a,size);
}
void print()//输出对象的成员值
{
cout<<"{";
for(int i=0;i<pc-1;i++)
cout<<list[i]<<",";
if(pc>0)
cout<<list[pc-1];
cout<<"}"<<endl;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询