C++问题定义类数组加入一个数

#include<iostream.h>
class ListArray
{
private:
int size;//整形数组大小
int elem;//整形数组当前元素个数,初始为0,当elem等于时size,数组满
int *p;//指向整形数组,动态分配空间
public:
ListArray(int s=100)//用初始化整形数组大小
{
size=s;
}

void put(int n)//将加入整形数组,elem自增1
{
elem=(sizeof(p)/sizeof(int));
if(elem<size)
{
p[elem]=n;
elem++;
}
else
{
cout<<"overflow";
}
}

void print()//输入整形数组所有元素
{
for(int i=0;i<elem;i++)
cout<<p[i]<<", ";
cout<<endl;
}

~ListArray()
{
delete []p;
}
};

void main()
{
int a[100]={1,2,3,4,5};
ListArray l(100,a);
l.put(10);
l.print();
}
哪错,请帮忙改一下

#include<iostream.h>
class ListArray
{
private:
int size;//整形数组大小
int elem;//整形数组当前元素个数,初始为0,当elem等于时size,数组满
int *p;//指向整形数组,动态分配空间
public:
ListArray(int s=100)//用初始化整形数组大小
{
size=s;
}

void put(int n)//将加入整形数组,elem自增1
{
elem=(sizeof(p)/sizeof(int));
if(elem<size)
{
p[elem]=n;
elem++;
}
else
{
cout<<"overflow";
}
}

void print()//输入整形数组所有元素
{
for(int i=0;i<elem;i++)
cout<<p[i]<<", ";
cout<<endl;
}

~ListArray()
{
delete []p;
}
};

void main()
{
int a[100]={1,2,3,4,5};
ListArray l(100);//只有一个参数
l.put(10);
l.print();
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-06-19
首先
ListArray l(100,a);
需要重载这个构造函数:

ListArray(int s=100, int *p = NULL)//用初始化整形数组大小
{
size=s;
}

其次

elem=(sizeof(p)/sizeof(int));
这句问题很严重,你希望用p指向空间的大小除以单位int的大小来确定元素个数,但是由于sizeof是一个编译期的运算符,所以它解释出来应该是
sizeof(int *),32位系统里这个值是恒等于4的,因此没有起到你预期的作用。

之后的不知道还有没有问题,你先解决这一块再调调看看?
第2个回答  2020-01-13
错哪了:
const
int
testgroup[3]
=
{{1,2},{2},{5,6}};定义的是
int的数组,而你的数组的成员是{1,2}等等,这不是
int哇....
怎样改:
定义一个二维数组,就是const
int
testgroup[3][2]
=
{{1,2},{2},{5,6}};
等等,每个元素就是一个数组,这样就行了.
也可以定义一个struct来保存{1,2}

C++:如何向int型的数组添加一个数
在数组定义时,直接把数值写入 int nData[5]= {123,234,325,561,475};2,程序执行中,用下标给数组中赋值 nData[3]= 675;注意数组下标从 0 起算,上面这个是给数组中的第 4 个数赋值。3,用数据指针给数组赋值 int nData[5];int point;……point = nData;\/\/取数组头指针 point += 3...

怎么用C++数组输入一个整数i, i
1、首先在电脑中,找到并打开Visual C++6.0,然后新建一个文件。2、接着在操作页面中,敲好函数库文件名代码,如下图所示。3、然后宏定义一个变量(表示为常量,作为数组长度),如下图所示。4、然后使用循环语句,输入数组各元素值,如下图所示。5、最后使用循环语句输出数组各元素值,就完成了。

用c++语言编写程序在一维数组中插入一个数
int a[]={1,2,3,4,5,6,7,8,9,10,11,0}; \/\/ 假定已知一维数组数据 int i,L;int p,v;cout << "input location 0 or 1,2,3...10:"<< endl;cin>>p; \/\/ 输入 下标 位置 cout << "the value you want to insert:" << endl;cin >> v; \/\/ 输入插入的值 L ...

c++怎么定义100的数组放入1-100
在c++中可以这样定义:int a[100],i;for(i=0;i<100;i++)a[i]=i+1;

...的三个问题1.判断一个数是否在数组里2.插入一个数进入数组的给定位置...
cout<<n<<"不在数组中"<<endl;} \/\/2.指定位置插入数据 int k;cout<<"输入插入的位置(k最大为29):"<<endl;cin>>k;int m;cout<<"输入插入的数:"<<endl;cin>>m;for(int i=29; i>k; i--){ num[i] = num[i-1]; \/\/注意是从后面往前面推,而非从前面往后面推,不然就错了...

C++定义一个整形数组,从键盘录入10个元素,然后任意输入一个整数,用顺...
static void Main(string[] args) { int[] numArr = new int[10];\/\/定义数组 Console.WriteLine("请输入10个数:");\/\/C++是printf("请输入10个数:"); for (int i = 0; i < numArr.Length; i++)\/\/numArr.Length这个会获取到数组的长度,此处也可以直接写10 { ...

...今输入一个数,要求按原来排序的规律将它插入数组中。”
for(i=0;i<10;i++){\/\/插入一个元素,组数长度增1 printf("%d",a);} printf("\\n");} 输入12,输出结果如下:总结:一组数组,直到找到大于或等于输入数的时候,找到插入数的下标,a[i+1]=a意思是将a的值给a[i+1],往后移一个(插入一个数,后面元素依次往后移动一个)方法二、includ...

c++ 如何做到每输入一个数,就定义为一个新数组
使用插入排序啊,用一个数组来保存所有的整数,新输入的整数放在末尾,然后根据大小插入排序,再输出,就满足你的要求了。

c++中怎样在已经初始化的数组中插入一个数,并且其他数相对顺序不变...
<< a[i]<< endl;} cout << endl;insert(a, sizeof(a)\/sizeof(int), 2, 8); \/\/ 在数组的第2个位置插入一个8 \/\/ 打印数组 for (int i = 0; i < sizeof(a)\/sizeof(int); ++i){ cout << "a["<< i << "] = "<< a[i]<< endl;} } 这样是你要的结果不?

C++如何实现数组添加元素
1. 创建一个新的数组,将原数组中的元素以及要添加的新元素复制到新数组中。示例代码:```c++ int oldArray = {1, 2, 3, 4, 5};int newArray = {0};int newElement = 6;for (int i = 0; i < 5; i++) { newArray[i] = oldArray[i];} newArray = newElement;```2. ...

相似回答