请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程proj3,其中声明的IntSet是一个用于表示正整数集合的类。IntSet的成员函数IsSubSet的功能是判断集合B是否是集合A的子集。在IsSubSet中可以使用成员函数IsMemberOf~

admin2015-06-27  21

问题 请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程proj3,其中声明的IntSet是一个用于表示正整数集合的类。IntSet的成员函数IsSubSet的功能是判断集合B是否是集合A的子集。在IsSubSet中可以使用成员函数IsMemberOf~判断一个正整数是否在此集合中,请编写成员函数IsSubSet。在main函数中给出了一组测试数据,此时程序的输出应该为:
集合A:1235810
集合B:28
集合B是集合A的子集
注意:只能在函数IsSubSet的“//**********333**********”和“//**********666**********”之间填入若干语句,不要改动程序中的其他内容。
程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//Intset.h
#include
usingnamespacestd;
constintMax=100;
clasSIntSet
{
public:
IntSet()//构造一个空集合
{
end=一1;
}
IntSet(inta[],intsize)//构造一个包含数组a中size个元素的集合
{
if(size>=Max)
end=Max一1;
else
end=size一1;
for(inti=0;i<=end;i++)
element=a
}
boolIsMemberOf(inta)
//判断a是否为集合的元素
{
for(inti=0;i<=end;i++)
if(element=a)
returntrue;
returnfalse;
}
intGetEnd(){returnend;}
//返回最后元素的下标
intGetElement(inti){returnele-
ment;}//返回下标i处的元素
boolIsSubSet(IntSet&set);
//判断集合set是否为当前集合的子集
voidPrint()
//输出集合中的所有元素
{
for(inti=0;i<=end;i++)
if((i+1)%20=0)
cout<<else
cout<<<’’;
cout<}
private:
intelement[Max];
intend;
};
voidwriteToFile(constchar*);
//main.cpp
#include"TntSet.h"
boolInisei::IsSubSet;(TntSet;&set)
{
//**********333**********
//**********666**********
}
intmain()
{
inta[]={1,2,3,5,8,10);
intb[]={2,8};
TntSetsetl(a,6),set2(b,2);
cout;<<"集合A:";
set1.Print();
cout:<<"集合B:";
set2.Print();
if(set1.IsSubSet(set2))
cout<<"集合B是集合A的子集"<<
end1;
else
cout<<"集合B不是集合A的子集"<<
end1;
writeToFile("");
return0;
}

选项

答案if (end < set.GetEnd()) return false; for (int i = 0; i <= set.GetEnd(); i++) if (!IsMemberOf(set.GetElement(i))) return false; return true;

解析 主要考查考生对数组的掌握情况,题目要求完成函数bool IntSet::IsSubSet(IntSet& set)的函数体,该函数用来判断集合B是否是集合A的子集。使用for循环遍历集合B的每个元素,调用函数IsMemberOf判断每个元素是否是集合A中的元素,如果全是则集合B是集合A的子集,否则不是集合A的子集。
转载请注明原文地址:https://kaotiyun.com/show/KnBD777K
0

随机试题
最新回复(0)