level 2
下面是编写代码的重要阶段,可以借鉴在设计基于DOS界面的控制台应用程序的代码,并将其作必要的改写,具体改写的步骤与内容如下。
①将class文件,重新命名为class.h,并将其加入MFC工程。
②修改class文件具体包括:
将显示矩阵PrintM()函数和显示方程PrintL()函数注释掉,因为在图形界面的程序上已经不需要连个函数承担输出功能了;
将输出方程组的解ShowX()函数加入参数double x[]变成ShowX(double x[]),以实现将所求的解输出至参数x中,并最终完成在对话框界面上的显示;
将全选主元高斯法求解函数Solve()中的两处cout语句去掉,因为不需要也不能够使用cout流实现输出。
③在对话框类的实现文件GuassLineGUIDlg.cpp中加入#include "Linequ.h",以实现在该文件中可使用Linequ类。
④在GuassLineGUIDlg.cpp文件中加入以下全局变量的定义,以实现GuassLineGUIDlg类和Linequ类之间的通信,具体代码如下:
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 b[4]={ 1.8471,1.7471,1.6471,1.5471};//方程右端项
double *X;//存放方程组的解
⑤编写读入数据按钮的消息处理函数,实现将矩阵和右端项的数据刷新到界面上,具体代码如下:
void CGuassLineGUIDlg::OnBUTTONRead()
{
// TODO: Add your control notification handler code here
m_A00=a[0]; m_A01=a[1]; m_A02=a[2]; m_A03=a[3];
m_A10=a[5]; m_A11=a[6]; m_A12=a[7]; m_A13=a[8];
m_A20=a[9]; m_A21=a[10]; m_A22=a[11]; m_A23=a[12];
m_A30=a[13]; m_A31=a[14]; m_A32=a[15]; m_A33=a[16];
m_b0=b[0]; m_b1=b[1]; m_b2=b[2]; m_b3=b[3];
UpdateData(FALSE);
}
⑥编写计算求解按钮的消息处理函数,实现将方程求解,具体代码如下:
void CGuassLineGUIDlg::OnButtonCalc()
{
// TODO: Add your control notification handler code here
Linequ equ1(4);//定义一个四元方程组对象
equ1.SetLinequ(a,b);//设置方程组
X=new double[4];
if(equ1.Solve())//求解方程组
{
equ1.ShowX(X);//输出方程组的解
m_X0=X[0];
m_X1=X[1];
m_X2=X[2];
m_X3=X[3];
UpdateData(FALSE);
}
else
MessageBox("求解失败");//求解失败
}
⑦退出按钮比较简单,代码如下:
void CGuassLineGUIDlg::OnBUTTONExit()
{
// TODO: Add your control notification handler code here
OnOK();
}
2015年12月28日 00点12分