四、实验步骤及操作:
1、编写操作界面
使用MFC提供的DLG类,在面板上添加一个输入文本框作为输入公式的实例输入。添加两个按钮分别表示在程序面板上显示结果和利用输出文本文件显示并保存结果。
2、按照运算规则编写求真值表函数
在对应按钮的触发事件中添加对应的处理函数。
void CMyDlg::OnOK() { // // // // //
if(Lock!=1) { }
this->SetDlgItemText(IDC_EDIT1,ShowList); this->SetDlgItemText(IDC_RSULT,ShowList); CString m_str; CString Savem_str; char *show; if(ClenOrNot==1) { } {
this->GetDlgItemText(IDC_EDIT1,m_str);
OnButton1();
AfxMessageBox(\出错!您未按要求操作,建议阅读帮助信息!\strcpy(ShowList,\
// TODO: Add extra validation here
show=new char[100];
else
Savem_str=m_str; strcpy(show,m_str); SequChar vc(show); for(int ss=0;ss<40;ss++)
{ }
if(vc.BaseArry[ss+1]==1)
break;
canshu[as]=vc.BaseArry[ss+1]; as++;
8
int M=GivenCharFuction();
//////////////////////////////////////////////////////////////////////////// int NmberLine=mi(M); int y=0; for(int /////
{ ///// } if(y<=1) {
for(int ShowCharWho=M-1;ShowCharWho>=0;ShowCharWho--) { }
strcat(ShowList,Savem_str); strcat(ShowList,\
for( NmberLine_X=0;NmberLine_X NmberLine=NmberLine_X; for(int i=10;i>10-M;i--) { Arry[i]=NmberLine%2; NmberLine=NmberLine/2; m_str=CharWho[ShowCharWho]; strcat(ShowList,m_str); strcat(ShowList,\ \ NmberLine=NmberLine_X; ///// for(int i=10;i>10-M;i--) ///// { //// } Arry[i]=NmberLine%2; ///// NmberLine=NmberLine/2; ////// //// NmberLine_X=0;NmberLine_X y=f(vc.BaseArry[0]); if(y>1) { } AfxMessageBox(\错误!您未按要求操作,请先阅读帮助信息!\OnButton1(); break; 9 } } } } y=f(vc.BaseArry[0]); for(int yx=11-M;yx<=10;yx++) { if(Arry[yx]==0) else strcat(ShowList,\ } if(y==0) else strcat(ShowList,\ strcat(ShowList,\strcat(ShowList,\strcat(ShowList,\ \strcat(ShowList,\ this->SetDlgItemText(IDC_RSULT,ShowList); // strcpy(ShowList,\ /////////////////////////////////////////////////////////////////////////// // CDialog::OnOK(); 3、编译程序,连调发现程序中存在的问题并修改 五、实验数据及结果分析: 例如:实验运行结果如下: p∧q∨R<=>!S 真值,应输入:((p&&Q)||R)<>(!S) 运行结果如下: Q R S p ((p&&Q)||R)<>(!S) 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 10 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 六、实验开设方式 本实验开设方式为个人实验; 七、实验思考 利用真值表技术和公式的演算方法,如何求得公式对应的主析取范式和主合取范式,如何判断两公式是否相等,是否为永真式、永假式、可满足式? 11 实验二 集合运算及关系运算 一、实验目的 集合是一切数学的基础,每一门数学的讨论都离不开集合,为此,我们必须掌握集合的基本定义及运算规律,掌握集合的运算规则对与学习离散数学将有着极大的帮助。 本实验通过编写一个C++程序,让计算机来完成两个集合的交、并、差、笛卡儿积及子集及简单关系运算。目的是让同学们更加深刻的理解集合的运算规则,特别是集合的笛卡儿积运算是我们接触的一个新的集合运算规则。 二、实验内容与要求 集合的运算及关系的运算: ? 交运算:设A,B是两个集合,则A∩B={x|(xA)并且(xB)} ? 并运算:设A,B是两个集合,则A∪B={x|(xA)或(xB)} ? 差运算:设A,B是两个集合,则A?B={x|(xB的笛卡儿积 求子集或求幂集 设A有n个元素,则ρ(A)有2n个元素。 证明:A的所有由k个元素组成的子集个数为从n个元素中取k个元素的组合数: 求关系合成运算: 设R是X到Y的关系,S是Y到Z的关系,则R?S称为R和S的复合关系,定义为: R?S= { 要求依据上述运算规则,实现任意给定两个集合的交、并、差、笛卡儿积运算,求幂集求关系的合成运算并显示运算结果。 A)并且(xB)} A)∧(y B)}为集合A与 笛卡儿集合:设A,B是两个集合,称集合A×B={ 三、实验步骤及操作: 1、编写操作界面 使用MFC提供的DLG类,在面板上添加两个输入文本框作为输入集合A、B的实例输入。添加四个按钮分别表示求交集,求并集,求差集和求笛卡儿积。 2、按照运算规则编写运算函数 在对应按钮的触发事件中添加对应的处理函数 例如求交集: void CMYcollectionDlg::Onjiaoji() { // TODO: Add your control notification handler code here CSplitStr Split1; CSplitStr Split2; 12