向量类的设计与实现.docx
《向量类的设计与实现.docx》由会员分享,可在线阅读,更多相关《向量类的设计与实现.docx(11页珍藏版)》请在冰豆网上搜索。
向量类的设计与实现
封皮
(按学校要求手工填写)
成绩评定表
学生姓名
邵泽宇
班级学号
07
专业
通信工程
课程设计题目
向量类的设计与实现
评
语
组长签字:
成绩
日期
20年月日
课程设计任务书
学院
信息科学与工程
专业
通信工程
学生姓名
邵泽宇
班级学号
07
课程设计题目
向量类的设计与实现
实践教学要求与任务
1.构造函数实现n维向量初始化构造。
这里n可变。
2.析构函数实现向量动态存储释放。
3.拷贝函数实现向量的拷贝构造。
4.重载赋值运算符'='。
实现两个向量之间的赋值。
5.编写成员函数求两个向量内积。
6.编写成员函数求两个向量外积。
7.编写成员函数求两个向量的和。
8.编写成员函数求两个向量的差。
9.编写成员函数判断两个向量之间的线性相关性。
10.编写一个主函数测试多项式类的上述功能。
工作计划与进度安排
第17周:
分析题目,查阅课题相关资料,进行类设计、算法设计;
第18周:
程序的设计、调试与实现;
第19周:
程序测试与分析,撰写课程设计报告,进行答辩验收。
指导教师:
201年月日
专业负责人:
201年月日
学院教学副院长:
201年月日
摘要
很多自然科学和工程技术中的问题的解决最终都归结到向量问题的处理,向量在解物理中的许多问题例如物理中力、速度、加速度、位移都是利用向量解决合力、合速度之类的问题。
本文采用C++语言实现了对向量的基本操作,采用VisualC++的控制台工程和MFC工程分别实现了对向量的处理。
关键词:
队列;类模板;控制台工程;MFC工程
1.需求分析
1.向量英文:
Vector,又叫矢量,顾名思义,有方向的量。
但是在计算机里vector又可以翻译为容器,或者说理解为容器,其实这不是一种很好的理解么,纯数学上的向量可以由2维3维推广到多维,实际上它不就是一个实数的容器,在推广到其他领域,向量即一个若干相关因素的容器,也就是说向量可以应用在很多领域中,可以轻松直观的描述事物的信息,也可以存放信息,例如,二维三维中可以描述点(坐标),物体的位置,描述颜色(RGB,红绿蓝,),在多维的话,可描述的范围就更广了,最简单的如描述一个人的性格,或者能力。
2.类是C++中十分重要的概念。
它是实现面向对象程序设计的基础。
C++对C的改进。
最重要的就是增加了“类”这样一种类型。
类是所有面向对象的语言的共同特征。
所有面向对象的语言都提供了这种类型。
如果一种计算机语言中不包含类。
它就不能称为面向对象的语言。
2.算法基本原理
1.初始化一个名叫XiangL的类。
为了便于类中的成员更改及操作。
将要用的两个向量数组设为public型。
即x[N]和y[N]。
另外由于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来讲。
为了方便实现操作。
我们只是设了公有成员。
有公有成员数据x[N]、y[N]用于存放向量。
其余则为公有函数。
XingL()为构造函数。
XLCopy(inta[],intb[],intd)为拷贝函数。
XLAddoperator=(inta[])为运算符”=”的重载。
XLNeiJi(inta[],intb[],intd)为求两个向量的内积的函数。
XLWaiJi(inta[],intb[],intc,intd)为求两个向量的外积的函数。
XLPlus(inta[],intb[],intd)为求两个向量的和的函数。
XLRedu(inta[],intb[],intd)为求两个向量的差的函数。
XLPanDuan(inta[],intb[],intc);为判断两个向量的线性关系的函数。
~XiangL()析构函数。
2.至于外加的类XLAdd。
了额方便进行对于”=”重载后能有很好的一个返回值而加的。
其含有一个公有成员数据d[N]。
用于存放一个向量。
便于其的输出与处理。
4.基于控制台的应用程序
整个程序分为三个大部分。
第一个部分即为对类XiangL的定义。
第二个部分则是对类XiangL中的各个成员函数进行定义。
第三个部分即为主函数,主函数中用了switch语句让用户选择要执行的函数。
类的初始定义
#include
#include
usingnamespacestd;
#defineN100
intn;
classXLAdd{
编写求和的消息处理函数,实现向量求和,具体代码如下
voidCMyDlg:
:
OnAddPlus()
{
编写求差的消息处理函数,实现向量求差,具体代码如下
voidCMyDlg:
:
OnReduceXL()
{
编写求内积的消息处理函数,实现求两个向量的内积,具体代码如下
voidCMyDlg:
:
OnNeiJiXL()
{
编写求外积的消息处理函数,实现求两个向量的外积,具体代码如下
voidCMyDlg:
:
OnWaiJiXL()
{
控制台的程序上。
我们没有考虑n维向量n的可变性。
只是设了两个三维的向量进行相加。
相减。
求内外积的运算。
程序的可用性及广泛性值得加强。
2.在MFC的程序设计中。
我们只是象征性的表示了一下向量。
而且赋予了一定的初始化。
所以整体程序的可变性不是很强。
3.对于MFC的应用程序。
由于MFC是依赖图形而存在的。
而我们所做的MFC的图形界面过于简单单一化了。
而且处理的灵活性不够。
对于这一点。
希望在以后学习中得到适当的加强。
参考文献
[1]谭浩强.C++面向对象程序设计.北京:
清华大学出版社,
[2]马秀丽,刘志妩,李筠.C语言程序设计.北京:
清华大学出版社,
[3]严蔚敏,吴伟民.数据结构(C语言版).北京:
清华大学出版社,2007