求助一道入门级C++题目1.设Δ是集合A上的二元运算,如果对于集合A中的任意元素a和b,都有aΔb=c,且c∈A,则称二

求助一道入门级C++题目
1.设Δ是集合A上的二元运算,如果对于集合A中的任意元素a和b,都有aΔb=c,且c∈A,则称二元运算Δ对于集合A是封闭的.现有一数组a,假定其数组元素构成集合A.试建立一个类DATA,判断求余运算“%”对集合A是否封闭.即判断数组中的任意两个元素a[i]和a[j],当a[j]不等于0时,a[i]除以a[j]所得余数仍然属于集合A.具体要求如下:
(1)私有数据成员
l int *a ; 整数指针,指向动态分配的数组空间
l int n ; 数组中元素个数
(2)公有成员函数
l DATA(int t[ ],int n1) ; 构造函数,用n1初始化n,并根据n动态生成数组a,用t数组对a数组初始化.
l int belong(int a[ ],int n,int x) ; 判断x的值是否在数组a中,如果在返回1,否则返回0.
l void fun( ) ; 判断求余运算%对本对象是否封闭,如果封闭,输出“封闭”.如果不封闭,则输出“不封闭”,同时输出第一个不满足条件的a[i]和a[j].
l void print( ) ; 输出成员数据的值.
l DATA( ) ; 析构函数,完成必要的功能.
(3)在主函数中对该类进行测试.先定义两个整型数组d1和d2,分别具有9个元素和8个元素,两个数组的值分别是{1,3,22,4,15,2,7,5,0}和{1,3,8,4,6,7,5,0}.然后用这两个数组初始化两个DATA类的对象test1和test2,测试并输出结果.正确的运行结果如下:
集合:1 3 22 4 15 2 7 5 0
封闭
集合:1 3 8 4 6 7 5 0
不封闭:8 3
zangdaoyong2008 1年前 已收到1个回答 举报

broland 幼苗

共回答了23个问题采纳率:91.3% 举报

#include
using namespace std;

class DATA
{
private:
int *a;
int n;
public:
DATA(int t[],int n);
int belong(int x);
void fun();
void print();
~DATA();
};

DATA::DATA(int t[],int n)
{
this->n=n;
a=new int[n];
for(int i=0;ia[i]=t[i];
}

int DATA::belong(int x)
{
for(int i=0;iif(a[i]==x) return 1;
return 0;
}

void DATA::fun()
{
for(int i=0;ifor(int j=0;j{
if(i!=j)
{
if(a[j]!=0)
{
if(!belong(a[i]%a[j]))
{
cout<<"不封闭: "<return;
}//end if
}//end if
}//end if
}//end for
cout<<"封闭"<}

void DATA::print()
{
cout<<"集合: ";
for(int i=0;icout<cout<}

DATA::~DATA()
{
delete [] a;
}

int main()
{
int d1[9]={1, 3, 22, 4, 15, 2, 7, 5, 0};
int d2[8]={1, 3, 8, 4, 6, 7, 5, 0};
DATA test1(d1,9),test2(d2,8);

test1.print();
test1.fun();

test2.print();
test2.fun();
system("pause");
}

/* 我认为int belong(int a[ ], int n, int x) 那么多参数没必要,因为a和n都是成员,直接可以访问,不必作为参数传进来, 我只是测试了你的这一组数据,不知道是否正确
最近比较无聊,答题当做复习了*/

1年前

5
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.021 s. - webmaster@yulucn.com