C++课程设计字符串类的设计与实现

发布时间 : 星期二 文章C++课程设计字符串类的设计与实现更新完毕开始阅读

选择0则结束函数演示。

5.1 程序运行结果

图2 程序运行结果

从图2中可以看出,程序能够实现全选主元高斯消去法对于线性方程组的求解,但是,对于求解结果的正确性问题却无法获知,为了能够验证求解结果的正确性,考虑将求解结果x带入原方程Ax=b中,如果满足原方程,即说明求解结

果是正确的,否则,说明求解存在问题,需对程序进行进一步调试分析。

为此,考虑在Linequ类中增加测试函数Test,用以验证求解结果的正确性。 void Linequ::test() { }

在主函数main中增加语句: equ1.test(); //验证求解结果

经过验证的程序运行结果如图3所示。

图3 程序运行结果的验证

//求解结果验证函数

double *b2;

b2=new double[index];

for (int i=0;i

for (i=0;i

cout<

cout<

b2[i]=0;

for (int j=0;j

b2[i]=b2[i]+MatrixA[i*index+j]*solu[j];

从图3中可以看出,方程组求解验证的右端项结果与原右端项结果完全一

致,这说明了方程组求解的正确性。

5.2运行结果分析

整个程序中的矩阵存储采用的是一维数组和动态内存分配方式。

基类是专门处理矩阵的类,公有派生类Linequ是针对线性方程组而设计的,除了继承基类的基本特征之外,结合问题的实际需要,增加了很多线性方程组所特有的成员,使基类Matrix进一步具体化、特殊化,达到对问题的有效描述和处理。

程序的访问控制也是根据问题的需要而设计的。基类的数据成员的存储、维护着矩阵数据,这正是派生类方程组的系数矩阵,使派生类解方程成员函数必须访问的。利用保护成员特征,将基类数据成员的访问控制属性设置为保护型,在公有派生类Linequ中就可以访问到基类继承下来的保护成员;而对于类外的其余模块,这些数据无法访问。这样,就在数据的共享与隐藏之间寻找到一个比较恰当的结合点。

在派生过程中,基类的构造函数和析构函数无法继承下来,因此在派生类中需要添加构造函数、析构函数来完成派生类的初始化和最后清理工作。派生类的构造函数通过调用基类的构造函数来对基类数据进行初始化,本设计中,派生类Linequ的构造函数调用了基类Matrix的构造函数并传递必须的初始化参数。派生类的析构函数调用基类的构造函数,共同完成清理任务。

6 基于MFC的图形界面程序开发

MFC的图形界面程序设计可在上述类设计的基础上进行改造,MFC的图形界面程序与DOS界面程序的主要不同点是:MFC图形界面程序与DOS界面程序的输入输出方式不同,DOS界面程序采用字符交互式实现数据输入输出,主要通过cin,cout等I/O流实现,而MFC的图形程序界面采用标准Windows窗口和控件实现输入输出,因此必须在MFC类的框架下加入上面所设计的矩阵和方程组类,并通过图形界面的输入输出改造来完成。

6.1 基于MFC的图形界面程序设计

(1)界面设计

首先在VC中建立MFC AppWizard(exe)工程,名称为GuassLineGUI,并在

向导的Step1中选择Dialog based,即建立基于对话框的应用程序,如下图4~5所示。

图4 建立MFC AppWizard(exe)工程

图5 建立基于对话框的应用程序

将对话框资源中的默认对话框利用工具箱改造成如下界面,如图6所示。

联系合同范文客服:xxxxx#qq.com(#替换为@)