建立一个Array类 - 爱问答

(爱问答)

建立一个Array类

建立一个Array类,具体要求如下:

⚫  私有数据成员:

 int *arr  动态空间,用于存放数组元素  int num   数组元素个数

⚫  公有成员函数:(以下为必须提供的,除此外的辅助函数自行设计)

Array(int a[],int size);用元素个数为size的a数组初始化arr和num

void clear();删除数组中的重复元素

void sort(int flag) ;对数组中的元素进行排序,若 flag 为 1 则为升序,flag 为0则为降序

Array operator+(Array& B)....................... ;完成当前对象数组元素与B对象中数组元素的合并,

要求合并后的元素无重复值

void print();打印数组元素

〜Array();完成对动态空间的释放

⚫ 在主函数中对相关成员函数进行测试。


程序的参考

#include <iostream>
#include <algorithm>
using namespace std;
class Array   // 建立一个Array类
{
   private: //私有数据成员:
       int *arr ; // 动态空间,用于存放数组元素
       int num ; //数组元素个数
   public: //公有成员函数:
       Array() //缺省构造
       {
           arr=NULL;
           num=0;
       }
       Array(int a[],int size) //用元素个数为size的a数组初始化arr和num
       {
           num=size;
           arr=new int[num];
           for(int i=0;i<num;i++)
             arr[i]=a[i];
       }
       void clear() //删除数组中的重复元素
       {
           int *b=new int[num];
           int ct=0,i,j,a;
           for(i=0; i<num; i++)
               {
                   a=arr[i];
                   for(j=0; j<ct; j++)
                       if (b[j]==a)
                           break;
                   if (j==ct)
                       b[ct++]=a;
               }
           ct--;
           for(i=0; i<ct; i++)
               arr[i]=b[i];
           num=ct;
       }
       void sort(int flag)  //对数组中的元素进行排序,若 flag 为 1 则为升序,flag 为0则为降序
       {
           if (flag==1)
               std::sort(arr,arr+num);
           else
               {
                   std::sort(arr,arr+num);
                   int i , t;
                   for(i=0; i<num/2; i++)
                       {
                           t=arr[i];
                           arr[i]=arr[num-1-i];
                           arr[num-1-i]=t;
                       }
               }
       }

       Array operator+(Array& B) //完成当前对象数组元素与B对象中数组元素的合并,要求合并后的元素无重复值
       {
           int *temp=new int[num+B.num];
           int i;
           for(i=0;i<num;i++)
             temp[i]=arr[i];
           for(;i<num+B.num;i++)
              temp[i]=B.arr[i-num];
            num+=B.num;
            delete arr;
            arr=temp;  
           clear();    
       }
       void print() //打印数组元素
       {
           for(int i=0;i<num;i++)
             cout << arr[i] << " ";
           cout << endl;  
       }
};
int main() //测试
{
   int a[]={1,43,22,4,2,12,4,4,32};
   Array arr(a,9);
   arr.clear();
   arr.print();
   arr.sort(1);
   arr.print();
   arr.sort(0);  
   arr.print();
   int b[]={4,455,34,3,8,7};
   Array brr(b,6);
   brr.print();
}


下一篇:求大神帮做个小说封面

上一篇:易语言加密狗每次都得安装吗?

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?