ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:370.85KB ,
资源ID:16720901      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16720901.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(面向对象课设范例通信工程最终Word格式.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

面向对象课设范例通信工程最终Word格式.docx

1、对于k从0开始到n-2结束,进行以下三步:(1)首先,从系数矩阵A的第k行、k列开始的子矩阵中选取绝对值最大的元素作为主元素,例如:(5)然后交换B的第k行与第i1行,第k行与第j1列,这样,这个子矩阵中的具有最大绝对值的元素被交换到第k行、k列的位置。(2)其次,进行归一化计算。计算方法为:(6) (3)最后,进行消去运算:(7) 第二步,回代过程。(8) 在这里,只是列出简要地给出了全选主元高斯消去法的算法步骤,具体推导及详细过程可参考数值分析方面的有关资料。2.2 开放地址法基本思想当发生地址冲突时,按照某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止。这个过程可用下式描述:

2、采用这种方法时,首先计算出元素的直接哈希地址,如果该存储单元已被其他元素占用,则继续查看地址为的存储单元,如此重复直至找到某个存储单元为空时,将关键字为 key 的数据元素存放到该单元。增量 d 可以有不同的取法,并根据其取法有不同的称呼。3 类设计3.1 类的概述类模板就是设计一种类的框架,可以适用不同的数据类型,只是一种类的抽象,因此,利用类模板可以针对不同的数据类型定义出具有共性的一组类。定义形式如下:template class 类名类声明体;与函数模板类似,通过使用类模板可以使得所定义的类中的某些数据成员某些成员函数的参数某些成员函数的返回值都可以是任意的数据类型(包括基本类型和自定

3、义类型)。所以,可以通过类模板将程序所处理的对象的类型参数化,从而使得同一段程序可用于处理多种不同类型的对象,提高了程序的抽象层次和可重用性。由于哈希表中的数据元素可以是char, int, float等多种数据类型,因此可以使用类模板来构造本程序的实现框架。本设计面临的计算问题的关键是矩阵运算。可以定义一个矩阵类Matrix作为基类,然后由矩阵类派生出线性方程组类Linequ。矩阵类Matrix只处理nn类型的方阵,方阵用一个一维数组来存放,矩阵类Matrix的数据成员包括数组的首地址和n,矩阵类Matrix的功能有设置矩阵的值SetMatrix( )和显示矩阵PrintM( )等。从问题的

4、需要来看,线性方程组类Linequ的数据除了由矩阵类Matrix继承过来用于存放系数矩阵A的成员外,还应该包括存放解向量x和方程右端向量b的数组首地址。线性方程组类Linequ的主要操作有设置SetLinequ( )、显示PrintL( )、求解Solve( )及输出方程的解showX( )。可以通过定义线性方程组类Linequ的新增成员函数来实现这些针对方程组求解的功能。在线性方程组的求解过程中,在线性方程组类Linequ的成员函数Solve中需要访问基类矩阵类Matrix的数据成员,利用公有继承方式派生,同时将Matrix类中的数据成员的访问控制设置为保护类型。这样,经过公有派生之后,基类

5、的保护成员在派生类中依然是保护成员,可以被派生类的成员函数访问。整个类分别使用了insert(t1 key,t2 data)实现哈希表元素的插入,remove(t1 key)实现哈希表元素的删除,query(t1 key)实现哈希表元素的查找,display()实现哈希表元素的显示。3.2 类的接口设计/Linequ.h文件,实现类的声明#include cmathusing namespace std;class Matrix /基类Matrix声明public: /外部接口 Matrix(int dims=2); /构造函数 Matrix(); /析构函数 void SetMatrix(d

6、ouble *rmax); /矩阵赋初值 void PrintM(); /显示矩阵protected: int index; /方阵的行数 double* MatrixA; /矩阵存放数组首地址;class Linequ:public Matrix /公有派生类Linequ声明 /外部接口 Linequ(int dims=2); Linequ(); void SetLinequ(double *a, double *b); /方程赋值 void PrintL(); /显示方程 int Solve(); /全选主元高斯消去法求解方程 void ShowX(); /显示方程的解private: /

7、私有数据 double *sums; /方程右端项 double *solu; /方程的解经过公有派生,Linequ类获得了除构造函数、析构函数之外的Matrix类的全部成员,由于基类的成员是公有和保护类型,因此在派生类中的成员函数中,基类继承来的成员全部可以访问,而对于建立Linequ类对象的外部模块来讲,基类的保护成员是无法访问的。通过保护访问类型和公有的继承方式,实现了基类Matrix的数据的有效共享和可靠保护。在程序中,方程的系数矩阵、解以及右端项全部采用了动态内存分配技术,这些工作都是在基类、派生类的构造函数中完成,它们的清理工作在析构函数中完成。3.3 类的实现template/构

8、造函数的实现hash:hash() array=new linknode7;for(int i=0;inext; delete n1; /插入元素的函数void hashkey=key;data=data;next=NULL; arraysum=n;/查询元素的函数实现t2 hashkey,(char*)(int)key)=0) cout关键字keydata; p=p- else if(type=void* if(int)p-key=(int)key) coutkey=key) coutreturn 您所查询的关键字在该哈希表中不存在!; template void hashdisplay()

9、/显示哈希表元素的函数实现 i+) if(arrayi!=NULL) ln *n=arrayi; cout else cout为空! /整型关键字哈希函数实现int hashnext! if(p-key=key) arraysum=p-delete p;cout=NULL&p-next-key!=key) linknode p2=p- p-next=p2- delete p2; else arraysum=NULL; else cout对不起!您删除的关键字在本哈希表中不存在!4 基于控制台的应用程序4.1 主函数设计/main.cpp主函数#include linequ.hint main(

10、) /主函数 double a= /系数矩阵 0.2368,0.2471,0.2568,1.2671, 0.1968,0.2071,1.2168,0.2271, 0.1581,1.1675,0.1768,0.1871, 1.1161,0.1254,0.1397,0.1490 ; double b4= 1.8471,1.7471,1.6471,1.5471; /方程右端项 Linequ equ1(4); /定义一个四元方程组对象 equ1.SetLinequ(a,b); /设置方程组 equ1.PrintL(); /输出方程组 if(equ1.Solve() /求解方程组 equ1.ShowX(

11、); /输出方程组的解 cout h;/将实例化的hash类对象声明为全局的以便以下函数使用/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog CAboutDlg();/ Dialog Data / /AFX_MSG(CAboutDlg) /AFX_MSG DEBEGIN_MESSAGE_MAP(CAboutDlg, CDialog) /AFX_MSG_MAP(CAboutDlg) / No message handlers /AFX_MSG_MAPEND_MESSAGE_MAP()/ CWANGDlg d

12、ialogCWANGDlg:CWANGDlg(CWnd* pParent /*=NULL*/) : CDialog(CWANGDlg:IDD, pParent)xGetApp()-LoadIcon(IDR_MAINFRAME);void CWANGDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CWANGDlg) DDX_Text(pDX, IDC_EDIT1, m_HX); DDX_Text(pDX, IDC_EDIT2, m_key); DDX_Text(pDX, IDC_E

13、DIT3, m_data); /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CWANGDlg, CDialog) /AFX_MSG_MAP(CWANGDlg) ON_WM_SYSCOMMAND() ON_W/ CWANGDlg message handlersBOOL CWANGDlg:OnInitDialog()OnInitDialog();h.insert(sds,etew);/初始化哈希表 h.insert(n25454.5765k2$345643.r55yan24h.display();/h对象调用display()函数以显示哈希表元素m_HX=h.str; Updat

14、eData(0);/在编辑框处显示哈希表元素 / Add About. menu item to system menu. / IDM_ABOUTBOX must be in the system command range. Menu-AppendMenu(MF_SEPARATOR); pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); if (nID & 0xFFF0) = IDM_ABOUTBOX) CAboutDlg dlgAbout; dlgAbout.DoModal(); CDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for yo

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1