基础问题,高分求解!!!***急不容缓***

wwtmw 2001-07-25 12:31:01

#include <iostream.h>

//问题都在下面的几个函数:
//问题1.要求添加array的数目,最后的元素初始化为0
//问题2.最后的元素改变为6
//问题3.顺序转换,使元素的内容由0变5,4变1,。。。
//问题4.把最后的元素cut掉

class Array
{
public:
void initialize(int n) ///////// Pass
{
length=n;
realloc(length);

for (unsigned i=0;i<length;i++)
ptr[i]=0;
}

void print() const ///////// Pass
{
cout<<"Here is :"<<endl;
for (unsigned i=0;i<length;i++)
cout<<"\t"<<ptr[i];
cout<<endl;
}

unsigned get_length() const ///////// Pass
{ return length; }

void store(unsigned i1,unsigned i2) ///////// Pass
{
ptr[i1]=i2;
cout<<"After store() ";
}


//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

//问题都在下面的几个函数:

void increment()
{//问题1.要求添加array的数目,最后的元素初始化为0

cout<<"After increment()";
}

void append(int num)
{//问题2.最后的元素改变为6

cout<<"After append()";
}

void reverse()
{//问题3.顺序转换,使元素的内容由0变5,4变1,。。。
for (unsigned i=0;i<length/2;i++)
aswap(&ptr[i],&ptr[int(length)-i]); ////为什么会出错??

cout<<"After reverse()";
}

void trunc()
{//问题4.把最后的元素cut掉

cout<<"After trunc()";
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

void del() const ///////// Pass
{ delete [] ptr; }

private:
int *ptr;
unsigned length;
void realloc(int len) ///////// Pass
{
length=len;
ptr=new int[length]; //// Just ptr
}

private:
void aswap(int *p,int *q)/// maybe can use in reverse()
{
int temp;
temp=*p;
*p=*q;
*q=temp;
}
};

int main(void)
{

const int dim=5;
Array A;
A.initialize(dim);
A.print();

for (unsigned i=0;i<A.get_length();++i)
A.store(i,i);
A.print();


A.increment();
A.print();

A.append(6);
A.print();

A.reverse();
A.print();

A.trunc();
A.print();


A.del();

return 0;

}

/***********************************************************

//在编译上面问题函数的时候有很多不明错误出现,不得其解,我会继续加分!!
//已经经过思考,还是得不到答案,只有求助大家。

/***********************************************************

...全文
187 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cline 2001-07-25
  • 打赏
  • 举报
回复
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()";
}

wwtmw 2001-07-25
  • 打赏
  • 举报
回复
问题一怎么解?急!
wwtmw 2001-07-25
  • 打赏
  • 举报
回复
好,你对了,一会儿给你10分!
EaseWay 2001-07-25
  • 打赏
  • 举报
回复
问题三中:aswap(&ptr[i],&ptr[int(length)-i]); 应为:aswap(&ptr[i],&ptr[int(length)-i-1]);
wwtmw 2001-07-25
  • 打赏
  • 举报
回复
怎么才能up上热点问题啊,毕竟已经写不少,呵呵
wwtmw 2001-07-25
  • 打赏
  • 举报
回复
怎么才能up上"热点问题"啊,已经写了这么多了:-)
wwtmw 2001-07-25
  • 打赏
  • 举报
回复
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];
}
Cline 2001-07-25
  • 打赏
  • 举报
回复
當然可用length-1;
只用后還要把length減1,兩步合並就成length--了.

當然不能刪,delete pNew后你將什麼都沒了,以后就無從尋找數據了.
wwtmw 2001-07-25
  • 打赏
  • 举报
回复
已经写好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;
}
wwtmw 2001-07-25
  • 打赏
  • 举报
回复
在问题一中:
为什么不用在
delete ptr;
ptr=pNew;
后面添加
delete pNew;//////// 一添加就有错 ????????

wwtmw 2001-07-25
  • 打赏
  • 举报
回复
我已经加分了,谢谢
Cline 2001-07-25
  • 打赏
  • 举报
回复
越界了,出軌了!
index range is from 0 to length-1 in C,C++ .
wwtmw 2001-07-25
  • 打赏
  • 举报
回复
原来是我问题2出了问题,现在已经没有Damage了。
完成了问题一,先给20分!

问题二:为什么附不了值??

void append(int num)
{//问题2.最后的元素改变为6
ptr[length]=num; //// 一添加这一行就有错,Damage
ptr[length+1]=num; ///无错,也无意义
cout<<"After append()";
}
Cline 2001-07-25
  • 打赏
  • 举报
回复
就是那個reverse(),我改了之后就好了.
wwtmw 2001-07-25
  • 打赏
  • 举报
回复
Damage和aswap无关,就算我把reverse()问题三删除,
DAMAGE仍然存在
wwtmw 2001-07-25
  • 打赏
  • 举报
回复
改了改了,已经OK
但是还没有改得分,呵呵

这个还没有改
void trunc()
{//问题4.把最后的元素cut掉
}
Cline 2001-07-25
  • 打赏
  • 举报
回复
回复人: EaseWay() (2001-7-25 12:38:00) 得0分
问题三中:aswap(&ptr[i],&ptr[int(length)-i]); 应为:aswap(&ptr[i],&ptr[int(length)-i-1]);
你是不是沒改呀?
wwtmw 2001-07-25
  • 打赏
  • 举报
回复
出现Debug错误,"Debug error ! ... DAMAGE :after Normal block (#21) at 0x00780D0.
///已经可以添加一个元素,但是错误在哪里………
如果选择"忽略",则Here is ::
0
1
2
3
4
0
wmouse 2001-07-25
  • 打赏
  • 举报
回复
up
hzslx 2001-07-25
  • 打赏
  • 举报
回复
学习
加载更多回复(4)

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧