资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
封 皮(按学校规定手工填写) 成 绩 评 定 表学生姓名邵泽宇班级学号专 业通信工程课程设计题目向量类的设计与实现评语组长签字:成绩日期 20 年 月 日课程设计任务书学 院信息科学与工程专 业通信工程学生姓名邵泽宇班级学号课程设计题目向量类的设计与实现实践教学规定与任务1.构造函数实现n维向量初始化构造。这里n可变。2.析构函数实现向量动态存储释放。3.拷贝函数实现向量的拷贝构造。4.重载赋值运算符=。实现两个向量之间的赋值。5.编写成员函数求两个向量内积。6.编写成员函数求两个向量外积。7.编写成员函数求两个向量的和。8.编写成员函数求两个向量的差。9.编写成员函数判断两个向量之间的线性相关性。0.编写一个主函数测试多项式类的上述功能。工作计划与进度安排第17周:分析题目,查阅课题相关资料,进行类设计、算法设计;第18周:程序的设计、调试与实现;第19周:程序测试与分析,撰写课程设计报告,进行答辩验收。指导教师: 201 年 月 日专业负责人:201 年 月 日学院教学副院长:201 年 月 日摘 要很多自然科学和工程技术中的问题的解决最终都归结到向量问题的解决,向量在解物理中的许多问题例如物理中力、速度、加速度、位移都是运用向量解决合力、合速度之类的问题。本文采用C+语言实现了对向量的基本操作,采用Visual C+ 6.0的控制台工程和MFC工程分别实现了对向量的解决。关键词:队列;类模板;控制台工程;MFC工程目 录1 需求分析12 算法基本原理13 类设计14 基于控制台的应用程序24.1 类的接口设计24.2 类的实现34.3 主函数设计54.4 基于控制台的应用程序测试65 基于MFC的应用程序95.1 基于MFC的应用程序设计95.1.1 MFC程序界面设计95.1.2 MFC程序代码设计105.2基于MFC的应用程序测试11结 论14参考文献151. 需求分析1.向量英文:Vector,又叫矢量,顾名思义,有方向的量。但是在计算机里vector又可以翻译为容器,或者说理解为容器,其实这不是一种很好的理解么,纯数学上的向量可以由2维3维推广到多维,事实上它不就是一个实数的容器,在推广到其他领域,向量即一个若干相关因素的容器,也就是说向量可以应用在很多领域中,可以轻松直观的描述事物的信息,也可以存放信息,例如,二维三维中可以描述点(坐标),物体的位置,描述颜色(RGB,红绿蓝,),在多维的话,可描述的范围就更广了,最简朴的如描述一个人的性格,或者能力。 2.类是C+中十分重要的概念。它是实现面向对象程序设计的基础。C+对C的改善。最重要的就是增长了“类”这样一种类型。类是所有面向对象的语言的共同特性。所有面向对象的语言都提供了这种类型。假如一种计算机语言中不包含类。它就不能称为面向对象的语言。2. 算法基本原理1.初始化一个名叫XiangL的类。为了便于类中的成员更改及操作。将要用的两个向量数组设为public型。即xN和yN。此外由于n维向量的n值需要多次反复运用。可以把n设为全局变量。2.析构函数为了实现向量动态存储释放。其实可以直接让其函数体内为空。3.拷贝函数实现向量的拷贝构造。为了方便实现。用了一个选择语句让用户选择要拷贝的是x还是y向量。4.重载赋值运算符=。实现两个向量之间的赋值。为了方便返回值。定义了一个XLAdd类。其类里有个公有成员数组。便于实现赋值后的输出。5.编写成员函数求两个向量内积。运用for循环实现对两个向量的内积求和。6.编写成员函数求两个向量外积。由于内积=|a|*|b|*cosa。而外积=|a|*|b|*sina。而上面已经求了内积。根据上面的关系可推导出外积。7.编写成员函数求两个向量的和。运用for循环实现。8.编写成员函数求两个向量的差。运用for循环实现。9.编写成员函数判断两个向量之间的线性相关性。为了简化判断。选择向量的前几项进行判断。此外假如内积为零的话。直接表达为两个向量是垂直的关系。3. 类设计 1.对于基类XiangL来讲。为了方便实现操作。我们只是设了公有成员。有公有成员数据 xN、yN用于存放向量。其余则为公有函数。XingL()为构造函数。XLCopy(int a,int b,int d)为拷贝函数。XLAdd operator =(int a)为运算符”=”的重载。XLNeiJi(int a,int b,int d)为求两个向量的内积的函数。XLWaiJi(int a,int b,int c,int d)为求两个向量的外积的函数。XLPlus(int a,int b,int d)为求两个向量的和的函数。XLRedu(int a,int b,int d)为求两个向量的差的函数。XLPanDuan(int a,int b,int c); 为判断两个向量的线性关系的函数。XiangL()析构函数。 2.至于外加的类XLAdd。了额方便进行对于”=”重载后能有很好的一个返回值而加的。其具有一个公有成员数据dN。用于存放一个向量。便于其的输出与解决。4.基于控制台的应用程序整个程序分为三个大部分。第一个部分即为对类XiangL的定义。第二个部分则是对类XiangL中的各个成员函数进行定义。第三个部分即为主函数,主函数中用了switch语句让用户选择要执行的函数。4.1 类的初始定义#include#includeusing namespace std;#define N 100int n;class XLAdd /备用的向量类。public: int dN;class XiangL /类XiangL的声明。public: int xN,yN; XiangL(); /构造函数。void XLCopy(int a,int b,int d); /拷贝函数。XLAdd operator =(int a); /运算符”=”的重载。int XLNeiJi(int a,int b,int d); /求两个向量的内积。float XLWaiJi(int a,int b,int c,int d); /求两个向量的外积。void XLPlus(int a,int b,int d); /求两个向量的和。void XLRedu(int a,int b,int d); /求两个向量的差。 void XLPanDuan(int a,int b,int c); /判断两个向量的线性关系。XiangL(); /析构函数。s;4.2 类的实现XiangL :XiangL()XiangL :XiangL()void XiangL :XLCopy(int a,int b,int d) /拷贝函数。int i; char c;int zN;cout选择要拷贝的向量。选x或y。c;switch(c)case x: for(i=0;id;i+) zi=ai; break;case y: for(i=0;id;i+) zi=bi; break;default :break;XLaddPrint(z,d);XLAdd XiangL :operator =(int a) /重载=。int i;XLAdd b;for(i=0;in;i+)b.di=ai;return b;int XiangL :XLNeiJi(int a,int b,int d) /求内积。int i,c;c=0;for(i=0;id;i+)c+=(ai*bi);return c;float XiangL :XLWaiJi(int a,int b,int c,int d) /求外积。int i,sx,sy;sx=0; sy=0;double s1,s2,z,y;for(i=0;id;i+)sx+=(ai*ai);sy+=(bi*bi);s1=sqrt(float)sx); s2=sqrt(float)sy); z=(float)acos(c/(s1*s2);y=(float)sin(z)*(s1*s2);return y;Void XiangL:XLPlus(int a,int b,int d) /求和。int i; int yN;for(i=0;id;i+)yi=ai+bi;XLaddPrint(y,d);Void XiangL :XLRedu(int a,int b,int d) /求差。int i; int yN;for(i=0;in;i+)yi=ai-bi;XLaddPrint(y,d);Void XiangL :XLPanDuan(int a,int b,int c) /判断线性关系。if(c=0) cout垂直。endl;else if(a0/a0)=(b1/b1) cout平行或在一条线。endl;else cout无线性关系。endl
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号