第十五周上机任务项目1-2建立专门的数组类处理有关数组的操作

来源:互联网 发布:iscroll5.js 官网下载 编辑:程序博客网 时间:2024/06/05 14:45
01./*02.* 程序的版权和版本声明部分03.* Copyright (c)2013, 烟台大学计算机学院学生04.* All rightsreserved.05.* 文件名称: MyArray.cpp06.* 作    者:赵冠哲07.* 完成日期:2013年6月7日08.* 版本号: v1.009.* 输入描述:10.* 问题描述:11.*/#include <iostream>using namespace std;class MyArray{private:    int *arr;//用于存放动态分配的数组内存首地址    int size;//数组大小public:    MyArray(int sz=50);    MyArray(int a[],int sz);//由一个内置类型的数组初始化    MyArray(const MyArray &A);//复制构造函数    ~MyArray(void);//析构函数,注意释放空间    MyArray&operator =(const MyArray &A); //重载“=”使得数组对象可以整体赋值    bool operator == (MyArray& A);//重载==,使得Array对象能整体判断两个数组是否相等(size相等且对应元素相等)    friend ostream& operator << (ostream& out,MyArray& A);//重载<<,输出数组    int GetSize(void) const;    void Resize(int sz);//取数组大小;};//以下为类成员函数的定义MyArray::MyArray(int sz){    size=sz;    arr=new int[size];    for(int i=0;i<size;++i)    *(arr+i)=0;}MyArray::MyArray(int a[],int sz){    size=sz;    arr=new int[size];    for(int i=0;i<size;++i)    *(arr+i)=*(a+i);}MyArray::MyArray(const MyArray &A){    size=A.size;    arr=new int[A.size];    for(int i=0;i<A.size;++i)    *(arr+i)=*(A.arr+i);}MyArray::~MyArray(void){    delete []arr;}MyArray& MyArray::operator=(const MyArray &A){    size=A.size;    arr=new int[A.size];    for(int i=0;i<A.size;++i)    *(arr+i)=*(A.arr+i);    return *this;}bool MyArray::operator == (MyArray& A){    bool compare=false;    double sum1=0,sum2=0;    for(int i=0;i<size;++i)    {        sum1=sum1+*(arr+i);        sum2=sum2+*(A.arr+i);    }    if(sum1==sum2)        compare=true;    return compare;}ostream& operator << (ostream& output,MyArray& A)  //重载<<,输出数组{    for(int i=0;i<A.size;++i)    output<<*(A.arr+i)<<"  ";    cout<<endl;    return output;}int MyArray::GetSize(void)const //取数组大小;{    return size;} void   MyArray::Resize(int sz)//修改数组的大小,如果sz大于数组的原大小,增加的元素初始为;如果sz大于数组的原大小,舍弃后面的元素【选做】 {     int *a,i=0;    if(sz>size)    {        a = new int[sz];        for( i=0;i<size;++i)        *(a+i)=*(arr+i);       for(i=size;i<sz;++i)        *(a+i)=0;        arr = new int[sz];        for(i=0;i<sz;++i)        *(arr+i)=*(a+i);        size=sz;    }    else    {        a = new int[sz];       for(i=0;i<sz;++i)        *(a+i)=*(arr+i);        arr = new int[sz];        for(i=0;i<sz;++i)        *(arr+i)=*(a+i);        size=sz;    }} //测试函数int main(){    int a[12]= {1,2,3,4,5,6,7,8,9,10,15,44};    int b[11]= {4,5,6,7,8,9,10,11,12,13,32};    MyArray arr1(a,10);  //测试用内置的数组初始化新定义的数组对象    MyArray arr2(b,10);    MyArray arr3(10);   //测试只指定大小的新数组对象的初始化    cout<<arr1;    //测试对<<的重载    cout<<arr2;    //测试对<<的重载    cout<<arr3;    //测试对<<的重载    cout<<"The size of arr1 is: "<<arr1.GetSize()<<endl;   //测试GetSize()成员函数    return 0;}


运行结果:

原创粉丝点击