问题三中:aswap(&ptr[i],&ptr[int(length)-i]); 应为:aswap(&ptr[i],&ptr[int(length)-i-1]); 

解决方案 »

  1.   

    void increment()
    {//问题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.   

    谢谢你的关注Firebowto 元元:
    //问题2就是这么无聊 :-)
    but问题1,把代码加上后,no error, 
    但是没有效果
    After increment()
    Here is ::
    0
    1
    2
    3
    4
    After append()
    Here is ::
    0
    1
    2
    3
    4
      

  3.   

    少一句加長Length的語句 
    pNew[length++]=0;
      

  4.   

    出现Debug错误,"Debug error ! ... DAMAGE :after Normal block (#21) at 0x00780D0.
    ///已经可以添加一个元素,但是错误在哪里………
    如果选择"忽略",则Here is ::
    0
    1
    2
    3
    4
    0
      

  5.   

    回复人: EaseWay() (2001-7-25 12:38:00)  得0分 
    问题三中:aswap(&ptr[i],&ptr[int(length)-i]); 应为:aswap(&ptr[i],&ptr[int(length)-i-1]);  
    你是不是沒改呀?
      

  6.   

    改了改了,已经OK
    但是还没有改得分,呵呵这个还没有改
    void trunc()
    {//问题4.把最后的元素cut掉
    }
      

  7.   

    Damage和aswap无关,就算我把reverse()问题三删除,
    DAMAGE仍然存在
      

  8.   

    就是那個reverse(),我改了之后就好了.
      

  9.   

    原来是我问题2出了问题,现在已经没有Damage了。
    完成了问题一,先给20分!问题二:为什么附不了值?? void append(int num)
    {//问题2.最后的元素改变为6
    ptr[length]=num;       //// 一添加这一行就有错,Damage
                      ptr[length+1]=num;      ///无错,也无意义
    cout<<"After append()";
    }
      

  10.   

    越界了,出軌了!
    index range is from 0 to length-1 in C,C++ .
      

  11.   

    在问题一中:
    为什么不用在
    delete ptr;
    ptr=pNew;
    后面添加
    delete pNew;//////// 一添加就有错  ????????
      

  12.   

    已经写好trunc()
    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;
    }
      

  13.   

    當然可用length-1;
    只用后還要把length減1,兩步合並就成length--了.當然不能刪,delete pNew后你將什麼都沒了,以后就無從尋找數據了.
      

  14.   

    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];  
    }