C primer plus第6版中文版编程练习答案第11章.docx

上传人:b****2 文档编号:3087529 上传时间:2023-05-05 格式:DOCX 页数:46 大小:21.68KB
下载 相关 举报
C primer plus第6版中文版编程练习答案第11章.docx_第1页
第1页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第2页
第2页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第3页
第3页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第4页
第4页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第5页
第5页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第6页
第6页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第7页
第7页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第8页
第8页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第9页
第9页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第10页
第10页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第11页
第11页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第12页
第12页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第13页
第13页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第14页
第14页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第15页
第15页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第16页
第16页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第17页
第17页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第18页
第18页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第19页
第19页 / 共46页
C primer plus第6版中文版编程练习答案第11章.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C primer plus第6版中文版编程练习答案第11章.docx

《C primer plus第6版中文版编程练习答案第11章.docx》由会员分享,可在线阅读,更多相关《C primer plus第6版中文版编程练习答案第11章.docx(46页珍藏版)》请在冰点文库上搜索。

C primer plus第6版中文版编程练习答案第11章.docx

Cprimerplus第6版中文版编程练习答案第11章

1、

//vector.h

#ifndefVECTOR_H_

#defineVECTOR_H_

#include

#include

#include

#include

#include

usingnamespacestd;

namespaceVECTOR

{

classVector

{

public:

enumMode{RECT,POL};

private:

doublex;

doubley;

doublemag;

doubleang;

Modemode;

voidset_mag();

voidset_ang();

voidset_x();

voidset_y();

public:

Vector();

Vector(doublen1,doublen2,Modeform=RECT);

voidreset(doublen1,doublen2,Modeform=RECT);

~Vector();

doublexval()const{returnx;}

doubleyval()const{returny;}

doublemagval()const{returnmag;}

doubleangval()const{returnang;}

voidpolar_mode();

voidrect_mode();

Vectoroperator+(constVector&b)const;

Vectoroperator-(constVector&b)const;

Vectoroperator-()const;

Vectoroperator*(doublen)const;

friendVectoroperator*(doublen,constVector&a);

friendostream&operator<<(ostream&os,constVector&v);

};

}

#endif

//vector.cpp

#include"vector.h"

namespaceVECTOR

{

constdoubleRad_to_deg=45.0/atan(1.0);

voidVector:

:

set_mag()

{

mag=sqrt(x*x+y*y);

}

voidVector:

:

set_ang()

{

if(x==0.0&&y==0.0)

ang=0.0;

else

ang=atan2(y,x);

}

voidVector:

:

set_x()

{

x=mag*cos(ang);

}

voidVector:

:

set_y()

{

y=mag*sin(ang);

}

Vector:

:

Vector()

{

x=y=mag=ang=0.0;

mode=RECT;

}

Vector:

:

Vector(doublen1,doublen2,Modeform)

{

mode=form;

if(form==RECT)

{

x=n1;

y=n2;

set_mag();

set_ang();

}

elseif(form==POL)

{

mag=n1;

ang=n2/Rad_to_deg;

set_x();

set_y();

}

else

{

cout<<"Incorrect3rdargumenttoVector()--";

cout<<"vectorsetto0\n";

x=y=mag=ang=0.0;

mode=RECT;

}

}

voidVector:

:

reset(doublen1,doublen2,Modeform)

{

mode=form;

if(form==RECT)

{

x=n1;

y=n2;

set_mag();

set_ang();

}

elseif(form==POL)

{

mag=n1;

ang=n2/Rad_to_deg;

set_x();

set_y();

}

else

{

cout<<"Incorrect3rdargumenttoVector()--";

cout<<"vectorsetto0\n";

x=y=mag=ang=0.0;

mode=RECT;

}

}

Vector:

:

~Vector()

{

}

voidVector:

:

polar_mode()

{

mode=POL;

}

voidVector:

:

rect_mode()

{

mode=RECT;

}

VectorVector:

:

operator+(constVector&b)const

{

returnVector(x+b.x,y+b.y);

}

VectorVector:

:

operator-(constVector&b)const

{

returnVector(x-b.x,y-b.y);

}

VectorVector:

:

operator-()const

{

returnVector(-x,-y);

}

VectorVector:

:

operator*(doublen)const

{

returnVector(n*x,n*y);

}

Vectoroperator*(doublen,constVector&a)

{

returna*n;

}

ostream&operator<<(ostream&os,constVector&v)

{

if(v.mode==Vector:

:

RECT)

os<<"(x,y)=("<

elseif(v.mode==Vector:

:

POL)

{

os<<"(m,a)=("<

<

}

else

os<<"Vectorobjectmodeisinvalid";

returnos;

}

}

//randwalk.cpp

#include"vector.h"

intmain()

{

usingVECTOR:

:

Vector;

srand(time(0));

doubledirection;

Vectorstep;

Vectorresult(0.0,0.0);

unsignedlongsteps=0;

doubletarget;

doubledstep;

ofstreamfout;

fout.open("savesteps.txt");

cout<<"Entertargetdistance(qtoquit):

";

while(cin>>target)

{

cout<<"Entersteplength:

";

if(!

(cin>>dstep))

break;

fout<<"TargetDistance:

"<

"<

while(result.magval()

{

fout<

"<

direction=rand()%360;

step.reset(dstep,direction,Vector:

:

POL);

result=result+step;

steps++;

}

cout<<"After"<

"hasthefollowinglocation:

\n";

cout<

fout<<"After"<

"hasthefollowinglocation:

\n";

fout<

result.polar_mode();

cout<<"or\n"<

cout<<"Averageoutwarddistanceperstep="

<

fout<<"or\n"<

fout<<"Averageoutwarddistanceperstep="

<

steps=0;

result.reset(0.0,0.0);

cout<<"Entertargetdistance(qtoquit):

";

}

cout<<"Bye!

\n";

cin.clear();

while(cin.get()!

='\n')

continue;

cin.get();

return0;

}

2、

//vector.h

#ifndefVECTOR_H_

#defineVECTOR_H_

#include

#include

#include

#include

usingnamespacestd;

namespaceVECTOR

{

classVector

{

public:

enumMode{RECT,POL};

private:

doublex;

doubley;

Modemode;

doubleset_mag()const;

doubleset_ang()const;

voidset_x(doublemag,doubleang);

voidset_y(doublemag,doubleang);

public:

Vector();

Vector(doublen1,doublen2,Modeform=RECT);

voidreset(doublen1,doublen2,Modeform=RECT);

~Vector();

doublexval()const{returnx;}

doubleyval()const{returny;}

doublemagval()const{returnset_mag();}

doubleangval()const{returnset_ang();}

voidpolar_mode();

voidrect_mode();

Vectoroperator+(constVector&b)const;

Vectoroperator-(constVector&b)const;

Vectoroperator-()const;

Vectoroperator*(doublen)const;

friendVectoroperator*(doublen,constVector&a);

friendostream&operator<<(ostream&os,constVector&v);

};

}

#endif

//vector.cpp

#include"vector.h"

namespaceVECTOR

{

constdoubleRad_to_deg=45.0/atan(1.0);

doubleVector:

:

set_mag()const

{

returnsqrt(x*x+y*y);

}

doubleVector:

:

set_ang()const

{

if(x==0.0&&y==0.0)

return0.0;

else

returnatan2(y,x);

}

voidVector:

:

set_x(doublemag,doubleang)

{

x=mag*cos(ang);

}

voidVector:

:

set_y(doublemag,doubleang)

{

y=mag*sin(ang);

}

Vector:

:

Vector()

{

x=y=0.0;

mode=RECT;

}

Vector:

:

Vector(doublen1,doublen2,Modeform)

{

mode=form;

if(form==RECT)

{

x=n1;

y=n2;

}

elseif(form==POL)

{

set_x(n1,n2/Rad_to_deg);

set_y(n1,n2/Rad_to_deg);

}

else

{

cout<<"Incorrect3rdargumenttoVector()--";

cout<<"vectorsetto0\n";

x=y=0.0;

mode=RECT;

}

}

voidVector:

:

reset(doublen1,doublen2,Modeform)

{

mode=form;

if(form==RECT)

{

x=n1;

y=n2;

}

elseif(form==POL)

{

set_x(n1,n2/Rad_to_deg);

set_y(n1,n2/Rad_to_deg);

}

else

{

cout<<"Incorrect3rdargumenttoVector()--";

cout<<"vectorsetto0\n";

x=y=0.0;

mode=RECT;

}

}

Vector:

:

~Vector()

{

}

voidVector:

:

polar_mode()

{

mode=POL;

}

voidVector:

:

rect_mode()

{

mode=RECT;

}

VectorVector:

:

operator+(constVector&b)const

{

returnVector(x+b.x,y+b.y);

}

VectorVector:

:

operator-(constVector&b)const

{

returnVector(x-b.x,y-b.y);

}

VectorVector:

:

operator-()const

{

returnVector(-x,-y);

}

VectorVector:

:

operator*(doublen)const

{

returnVector(n*x,n*y);

}

Vectoroperator*(doublen,constVector&a)

{

returna*n;

}

ostream&operator<<(ostream&os,constVector&v)

{

if(v.mode==Vector:

:

RECT)

os<<"(x,y)=("<

elseif(v.mode==Vector:

:

POL)

{

os<<"(m,a)=("<

<

}

else

os<<"Vectorobjectmodeisinvalid";

returnos;

}

}

//randwalk.cpp

#include"vector.h"

intmain()

{

usingVECTOR:

:

Vector;

srand(time(0));

doubledirection;

Vectorstep;

Vectorresult(0.0,0.0);

unsignedlongsteps=0;

doubletarget;

doubledstep;

cout<<"Entertargetdistance(qtoquit):

";

while(cin>>target)

{

cout<<"Entersteplength:

";

if(!

(cin>>dstep))

break;

while(result.magval()

{

direction=rand()%360;

step.reset(dstep,direction,Vector:

:

POL);

result=result+step;

steps++;

}

cout<<"After"<

"hasthefollowinglocation:

\n";

cout<

result.polar_mode();

cout<<"or\n"<

cout<<"Averageoutwarddistanceperstep="

<

steps=0;

result.reset(0.0,0.0);

cout<<"Entertargetdistance(qtoquit):

";

}

cout<<"Bye!

\n";

cin.clear();

while(cin.get()!

='\n')

continue;

cin.get();

return0;

}

3、

//vector.h

#ifndefVECTOR_H_

#defineVECTOR_H_

#include

#include

#include

#include

usingnamespacestd;

namespaceVECTOR

{

classVector

{

public:

enumMode{RECT,POL};

private:

doublex;

doubley;

doublemag;

doubleang;

Modemode;

voidset_mag();

voidset_ang();

voidset_x();

voidset_y();

public:

Vector();

Vector(doublen1,doublen2,Modeform=RECT);

voidreset(doublen1,doublen2,Modeform=RECT);

~Vector();

doublexval()const{returnx;}

doubleyval()const{returny;}

doublemagval()const{returnmag;}

doubleangval()const{returnang;}

voidpolar_mode();

voidrect_mode();

Vectoroperator+(constVector&b)const;

Vectoroperator-(constVector&b)const;

Vectoroperator-()const;

Vectoroperator*(doublen)const;

friendVectoroperator*(doublen,constVector&a);

friendostream&operator<<(ostream&os,constVector&v);

};

}

#endif

//vector.cpp

#include"vector.h"

namespaceVECTOR

{

constdoubleRad_to_deg=45.0/atan(1.0);

voidVector:

:

set_mag()

{

mag=sqrt(x*x+y*y);

}

voidVector:

:

set_ang()

{

if(x==0.0&&y==0.0)

ang=0.0;

els

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2