请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明IntSet是一个用于表示正整数集合的类。IntSet的成员函数Intersection的功能是求当前集合与另一个集合的交集。请完成成员函数Intersection。在mai

admin2019-07-10  47

问题 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明IntSet是一个用于表示正整数集合的类。IntSet的成员函数Intersection的功能是求当前集合与另一个集合的交集。请完成成员函数Intersection。在main函数中给出了一组测试数据,此时程序的输出应该是:
    求交集前:
    1 2 3 5 8 10
    2 8 9 11 30 56 67
    求交集后:
    1 2 3 5 8 10
    2 8 9 11 30 56 67
    2 8
    要求:
    补充编制的内容写在“//********333********”与“//********666********”之间,不得修改程序的其他部分。
    注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
1  //Intset.h
2  #include
3  using namespace std;
4
5  const int Max=100;
6  Class IntSet
7    {
8 publiC:
9    IntSet()
10  //构造一个空集合
11    {
12    end=-1;
13    }
14    IntSet(int a[],int si ze)//构造一个包含数组a中size个元素的集合
15    {
16    if(Size>=Max)
17    end=Max-1;
18    else
19    end=size-1;
20    for(int i=0;i<=end;i++)
21    element=a
22    }
23    bool IsMemberOf(int a)
24  //判断a是否为集合中的一个元素
25    {
26    for(int i=0;i<=end;i++)
27    if(element==a)
28    return true;
29    return false;
30    }
31    int GetEnd(){return end;}
32  //返回最后一个元素的下标
33    int GetElement(int i)(return ele-ment;}
34  //返回下标为i的元素
35    IntSet Intersection(IntSet&set);
36  //求当前集合与集合set的交
37    void Print()
38  //输出集合中的所有元素
39    {
40    for(int i=0;i<=end;i++)
4l    if((i+1)%20==0)
42    cout<<43    else
44    cout<<<’ ’;
45    cout<46    }
47  private:
48    int element[Max];
49    int end;
50    };
51  void writeToFile(const char*};
1  //main.cpp
2  #include"IntSet.h"
3  IntSet工ntSet::Intersection(IntSet&set)
4    {
5    int a[Max],size=0;
6    //********333********
7
8
9    //********666********
10    return IntSet(a,size);
11   }
12
13   int main()
14   {
15   int a[]={1,2,3,5,8,10};
16   int b[]={2,8,9,11,30,56,67};
17   IntSet setl(a,6),set2(b,7),set3;
18   cout<<"求交集前:"<19   set1.Print();
20   set2.Print();
21   set3.Print();
22   set3=set1.Intersection(set2);
23   cout<24    set1.Print();
25   set2.Print();
26   set3.Print();
27   writeToFile(””);
28   return 0;
29   }

选项

答案1 for(int i=0;i<=set.GetEnd();i++) //遍对象set数组 2 if(IsMemberOf(set.GetElement(i))) //判断对象Set数组第i个值是不是集合中的值,如果是则把它插入到a中 3 a[size++]=set.GetElement(i);

解析 主要考查考生对数组的掌握,根据IntSet类的构造函数:
    IntSet(int a[],int size)
//构造一个包含数组a中size个元素的集合
    l    {
    2    if(size>=Max)
    3    end=Max-1;
    4    e1se
    5    end=size-1;
    6    for(int i=0;i<=end;i++)
    7    element=a
    8    }
    可知数组element用来装载集合,end表示数组长度,因此调用函数IsMemberOf来判断set中的元素是否存在于集合中,如果存在则放人数组a中。
转载请注明原文地址:https://kaotiyun.com/show/NW8p777K
0

最新回复(0)