c++编程题

1.设Δ是集合A上的二元运算,如果对于集合A中的任意元素a和b,都有aΔb=c,且c∈A,则称二元运算Δ对于集合A是封闭的。现有一数组a,假定其数组元素构成集合A。试建立... 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,测试并输出结果
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
祜风
2015-09-01 · TA获得超过226个赞
知道小有建树答主
回答量:313
采纳率:100%
帮助的人:132万
展开全部
#include <iostream>
using namespace std;
class DATA
{
public:
DATA(int t[ ], int n1) ; // 构造函数,用n1初始化n,并根据n动态生成数组a,用t数组对a数组初始化。

int belong(int a[ ], int n, int x) ; //判断x的值是否在数组a中,如果在返回1,否则返回0。

void fun( ) ; //判断求余运算%对本对象是否封闭,如果封闭,输出“封闭”。如果不封闭,则输出“不封闭”,同时输出第一个不满足条件的a[i]和a[j]。

void print( ) ; //输出成员数据的值。

~DATA() ; //析构函数,完成必要的功能。
private:
int *a ; //整数指针,指向动态分配的数组空间

int n ; //数组中元素个数
};
DATA::DATA(int t[],int n1)
{
n=n1;
a=new int [n1];
if(a)
{
memcpy(a,t,n1*sizeof(int));
}
}
int DATA::belong(int a[],int n,int x)
{
for(int i=0;i<n;i++)
if(a[i]==x)return 1;
return 0;
}
void DATA::fun()
{
if(a)
{
int i,j,b1,b2,c,r;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
b1=b2=-1;
c=0; r=0;
if(a[j]!=0)
{
b1=a[i]%a[j];
c++;
}
if(a[i]!=0)
{
b2=a[j]%a[i];
c++;
}
if(c==2)
{
if(!(belong(a,n,b1)&&belong(a,n,b2)))
{
cout<<"不封闭"<<endl;
cout<<a[i]<<'\t'<<a[j]<<endl;
return ;
}
}
if(c==1)
{
if(b1==-1)
{
r=belong(a,n,b2);
}
else
r=belong(a,n,b1);
if(!r)
{
cout<<"不封闭"<<endl;
cout<<a[i]<<'\t'<<a[j]<<endl;
return ;
}
}
}
}
}
cout<<"封闭"<<endl;
}
void DATA::print()
{
for(int i=0;i<n;i++)
{
if(i==0)
cout<<a[i];
else
cout<<'\t'<<a[i];
}
cout<<endl;
}
DATA::~DATA()
{
if(a)
{
n=0;
delete []a;
a=NULL;
}
}
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);
DATA test2(d2,8);
test1.print();
test1.fun();
test2.print();
test2.fun();
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式