各位路过的大侠,一道C++编程题

设计一个类MyARR,要求实现以下功能:
数据成员:
1 数组长度
2 数组名
函数成员:
MyARR()         //构造函数
Void deletesame()    //删除数组中元素相同的 只剩一项
Void show()   //要求显示出各个元素
数组b[16]={1,2,2,2,3,4,5,5,5,6,6,6,7,8,9,10}  (随便写的几个数)  用数组b去初始化MyARR,然后去掉重复的 要求调用show()输出元素为1,2,3,4,5,6,7,8,9,10,实现这个类并测试。

你看这样能不能满足你的需求:

#include <iostream>
#include<algorithm>
#include <stdlib.h>
using namespace std;
#define N 1000  //定义数组最大为1000;
class MyARR{
public:
int a[N];
int len; 
MyARR(int b[],int len){
this->len=len;
  for(int i=0;i<len;++i) 
  {
  a[i]=b[i];
  }
  }
  void deletesame()
  {
  sort(a,a+len);
  int l=len;
  for(int i=0;i<l-1;++i) 
  {
  if(a[i]==a[i+1])
  {
  int st=a[len-1];
  a[len-1]=a[i+1];
   a[i+1]=st;
  sort(a,a+len-1);
  i=-1;
  len-=1;
  l-=1;
  }
  }
 
  }
  void show() 
  {
  for(int i=0;i<len;++i) 
  cout<<a[i]<<" ";
  cout<<endl;
  }
 };
 int main(){
  int c[]={3,2,1,1,2,3,1,2,3};
  MyARR m(c,9);//初始化传入数组名和长度 
  m.deletesame();
  m.show();
  return 0;
 }

如有疑问可以追问!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-01-23
数组名 是干嘛的?
template <typename T>
class CMyArray
{
public:
CMyArray(){
size = 0;
comp = 10;
data = new T[comp];
}
CMyArray(T* temp,int sizeTemp){
size = 0;
comp = sizeTemp;
data = new T[comp];
for(int i = 0;i < sizeTemp;++i)
{
data[i] = temp[i];
size++;
}
}
~CMyArray(){ delete []data;}
bool deleteit(int pos)//删除某一位置
{
if(pos >= size)
return false;
for(int i = pos;i < size - 1;++i)
{
data[i] = data[i+1];
}
size--;
return true;
}
void deletesame()
{
for(int i = 1; i< size;)//遍历数组。
{
bool del = true;
for(int j = 0;j < i;++j)//查找前面是否有相同值
{
if(data[j] == data[i])//如果有
{
bool re = deleteit(i);//删除这个位置值
if(re)//如果成功删除,修改标记
del = false;
}
}
if(del)//标记没有变化,说明没找到,继续往后找,++i; 有变化,不用++i;
++i;
}
}
void show()
{
for(int i = 0;i < size;++i)
cout<<data[i]<<endl;
}

private:
int size; //当前长度
int comp;//容量
T* data;
};

int main()
{
int b[16] = {1,2,2,2,3,4,5,5,5,6,6,6,7,8,9,10 };
CMyArray<int> arr(b,16);
arr.show();
arr.deletesame();
arr.show();
system("pause");
}
看下 是这意思吗?追问

直接实现还有的功能就行,数组名不应该是地址吗

追答

有什么需要修改的再找我
这个地址 就是地址 ,不是数组名。 。 。看个人理解吧 。 非要理解为数组名也行。
一般习惯把数组名 当作地址, 没有听说,把地址 当作数组名来理解的。。。

相似回答