5.定义一个数组类 Array,求整型一维组中值为素数的元素的平均值。具体要求如下:
- 私有成员数据:
- int *p,k;// p 表示维组, k 为数组大小
- float *s;//维组中素数元素的平均值
- 公有成员函数:
- Array(int*ptr,int n):根据参数初始化 p 和 k,然后初始化 s 并为 s 赋初值;
- int fun(int n):判断 n 是否为素数,若是返回1,否则返回0;
- void sum ():求素数元素的平均值;
- void show():输出所有成员数据,数组每行5个元素,其他成员每行一个;
- 析构函数。
- 设计一个完整的程序对该类进行测试。
以数组{5,2,7,4,8,23,65,1,40}说明 Array 类型对象 arr,并对其测试。
#include<iostream>
using namespace std;
class Array{
int *p,k;
float *s;
public:
Array(int *ptr,int n){
k=n;
p=new int[n];
for(int i=0;i<k;i++){
p[i]=ptr[i];
}
s=new float(0);
}
int fun(int n){
if(n==0||n==1)return 0;
for(int i=2;i<n;i++){
if(n%i==0)return 0;
}
return 1;
}
void sum(){
int count=0;
for(int i=0;i<k;i++){
if(fun(p[i])){
*s+=p[i];
count++;
}
}
*s/=count;
}
void print(){
for(int i=0;i<k;i++){
cout<<p[i]<<' ';
if((i+1)%5==0){
cout<<endl;
}
}
cout<<"sum:"<<*s<<endl;
}
~Array(){
if(p)delete[]p;
if(s)delete s;
}
};
int main(){
int a[]={5,2,7,4,8,23,65,1,40};
Array array(a,9);
array.sum();
array.print();
return 0;
}