一、实验要求:
1.定义一个数组类Array,求整形一维数组中值为素数的元素的平均值。类的UML图如下
Array |
- *p: int // 数组 - k: int // k为数组大小 - *s: float // 维组中素数的平均值 |
+ Array(int *ptr,int n)// 构造函数,根据参数初始化p和k,然后为s赋初值; + fun(int n):int // 判断n是否为素数, + sum():void // 求素数元素的平均值 + show():void // 输出所有成员数据,数组每行5个元素,其他成员每行一个 + ~ Array() // 析构函数 |
设计一个完整的程序对该类进行测试,以数组{2,5,7,4,8,23,65,1,40}说明Array类型对象array, 并对其测试。
包含:Array.h、Array.cpp和test.cpp三个源文件。
//Arrary.h
#ifndef _Array_H
#define _Array_H
class Array
{
private:
int *p,k;
float *s;
public:
Array();
Array(int *ptr,int n);
~Array();
int fun(int n);
void sum();
void show();
};
#endif
//Array.cpp
#include<iostream>
#include "Array.h"
using namespace std;
Array::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 Array::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 Array::sum()
{
int count=0;
for(int i=0;i<k;i++)
{
if(fun(p[i]))
{
*s+=p[i];
count++;
}
}
*s/=count;
}
void Array::show()
{
for(int i=0;i<k;i++){
cout<<p[i]<<' ';
if((i+1)%5==0){
cout<<endl;
}
}
cout<<endl;
cout<<"sum:"<<*s<<endl;
}
Array::~Array ()
{
if(p)delete[]p;
if(s)delete s;
}
#include "Array.h"
#include<iostream>
using namespace std;
int main(){
int a[]={2,5,7,4,8,23,65,1,40};
Array array(a,9);
array.sum();
array.show();
return 0;
getchar();
}