OK,i see你又拿了20分。还有个疑问:(10分) in void realloc(int len ) { //length=(unsigned)len; ///or //length=unsigned(len); ////why is not necesserary,??? ///cuz len is int ,and length is unsigned, ///though the range int>unsigned, don't need to be SAME ? ptr=new int[length]; }
{//问题1.要求添加array的数目,最后的元素初始化为0
int* pNew=new int[length+1];
memcpy(pNew,ptr,sizeof(int)*length);
pNew[length]=0;
delete ptr;
ptr=pNew;
cout<<"After increment()";
}void append(int num)
{//问题2.最后的元素改变为6
//最后一個元素指什麼?,是不是如上面,把6賦給最后一個就OK?
cout<<"After append()";
}
//问题2就是这么无聊 :-)
but问题1,把代码加上后,no error,
但是没有效果
After increment()
Here is ::
0
1
2
3
4
After append()
Here is ::
0
1
2
3
4
pNew[length++]=0;
///已经可以添加一个元素,但是错误在哪里………
如果选择"忽略",则Here is ::
0
1
2
3
4
0
问题三中:aswap(&ptr[i],&ptr[int(length)-i]); 应为:aswap(&ptr[i],&ptr[int(length)-i-1]);
你是不是沒改呀?
但是还没有改得分,呵呵这个还没有改
void trunc()
{//问题4.把最后的元素cut掉
}
DAMAGE仍然存在
完成了问题一,先给20分!问题二:为什么附不了值?? void append(int num)
{//问题2.最后的元素改变为6
ptr[length]=num; //// 一添加这一行就有错,Damage
ptr[length+1]=num; ///无错,也无意义
cout<<"After append()";
}
index range is from 0 to length-1 in C,C++ .
为什么不用在
delete ptr;
ptr=pNew;
后面添加
delete pNew;//////// 一添加就有错 ????????
void trunc()
{
int *pOld=new int[length--];
////为什么这里就要用length--,用length-1为什么不行?(10分)
for(unsigned i=0;i<length;i++) pOld[i]=ptr[i];
del();
ptr=pOld;
cout<<"After trunc()"<<endl;
}
只用后還要把length減1,兩步合並就成length--了.當然不能刪,delete pNew后你將什麼都沒了,以后就無從尋找數據了.
in
void realloc(int len )
{
//length=(unsigned)len; ///or
//length=unsigned(len);
////why is not necesserary,???
///cuz len is int ,and length is unsigned,
///though the range int>unsigned, don't need to be SAME ?
ptr=new int[length];
}