用C或C++编写程序,要求:输入命题公式,给出它的主合取范式和主析取范式.用C或C++编写程序,要求:输入命题公式,给出它的主合取范式和主析取范式.例如运行时,从键盘输入:p∧q∨r程序能根
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/13 12:59:01
![用C或C++编写程序,要求:输入命题公式,给出它的主合取范式和主析取范式.用C或C++编写程序,要求:输入命题公式,给出它的主合取范式和主析取范式.例如运行时,从键盘输入:p∧q∨r程序能根](/uploads/image/z/8816631-15-1.jpg?t=%E7%94%A8C%E6%88%96C%2B%2B%E7%BC%96%E5%86%99%E7%A8%8B%E5%BA%8F%2C%E8%A6%81%E6%B1%82%EF%BC%9A%E8%BE%93%E5%85%A5%E5%91%BD%E9%A2%98%E5%85%AC%E5%BC%8F%2C%E7%BB%99%E5%87%BA%E5%AE%83%E7%9A%84%E4%B8%BB%E5%90%88%E5%8F%96%E8%8C%83%E5%BC%8F%E5%92%8C%E4%B8%BB%E6%9E%90%E5%8F%96%E8%8C%83%E5%BC%8F.%E7%94%A8C%E6%88%96C%2B%2B%E7%BC%96%E5%86%99%E7%A8%8B%E5%BA%8F%2C%E8%A6%81%E6%B1%82%EF%BC%9A%E8%BE%93%E5%85%A5%E5%91%BD%E9%A2%98%E5%85%AC%E5%BC%8F%2C%E7%BB%99%E5%87%BA%E5%AE%83%E7%9A%84%E4%B8%BB%E5%90%88%E5%8F%96%E8%8C%83%E5%BC%8F%E5%92%8C%E4%B8%BB%E6%9E%90%E5%8F%96%E8%8C%83%E5%BC%8F.%E4%BE%8B%E5%A6%82%E8%BF%90%E8%A1%8C%E6%97%B6%2C%E4%BB%8E%E9%94%AE%E7%9B%98%E8%BE%93%E5%85%A5%EF%BC%9Ap%E2%88%A7q%E2%88%A8r%E7%A8%8B%E5%BA%8F%E8%83%BD%E6%A0%B9)
用C或C++编写程序,要求:输入命题公式,给出它的主合取范式和主析取范式.用C或C++编写程序,要求:输入命题公式,给出它的主合取范式和主析取范式.例如运行时,从键盘输入:p∧q∨r程序能根
用C或C++编写程序,要求:输入命题公式,给出它的主合取范式和主析取范式.
用C或C++编写程序,要求:
输入命题公式,给出它的主合取范式和主析取范式.
例如运行时,从键盘输入:
p∧q∨r
程序能根据这个输入求出主析取范式:
p∧!q∧r) ∨(!p∧q∧r) ∨(p∧!q∧r) ∧p∧q∧!r) ∨(p∧q∧r)
同样得到主合取范式,∨可用or或&代替,∧可以用and 或&&代替
输入:(p->q)->q
得到主析取范式:(p∧!q)∨(!p∧q)∨(p∧q)
p∨q∨r (主合取范式)
以下是原题:
1、设计并开发一个能帮助学习数理逻辑的小软件.
2、结合离散数学的相关知识,掌握VC等集成开发环境,开发一个能辅助教学的小软件.
1、输入命题公式,该软件能判断公式的类型,并列出真值表.
2、输入命题公式,给出它的主合取范式和主析取范式.
1、使用VC等集成开发环境设计并开发出一个辅助教学的小软件.
2、能够对命题公式的类型做出判断,能列出真值表,写出主范式.
3、有能力者可扩充数理逻辑的其他内容,譬如推理系统的构造和证明,求谓词公式的前束范式等.
用C或C++编写程序,要求:输入命题公式,给出它的主合取范式和主析取范式.用C或C++编写程序,要求:输入命题公式,给出它的主合取范式和主析取范式.例如运行时,从键盘输入:p∧q∨r程序能根
A-Z + is OR * is AND _ is → # is♁(圆圈里加个+) @ is ⊙
$ is ↑ 命题的"与非" 运算( "与非门" )
% is ↓ 命题的"或非"运算( "或非门" )
Input the source formula:
A*!S+R
Here!
8countTerms
NORMALc:(A*!S*!R)+(!A*!S*R)+(A*!S*R)+(!A*S*R)+(A*S*R)
NORMALd (A+S+R)*(A+!S+R)*(!A+!S+R)
!A+S*!R
Input the source formula:
(!A+B)_R
Here!
8countTerms
NORMALc:(!A*!B*!R)+(A*!B*!R)+(!A*B*!R)+(A*B*!R)+(!A*!B*R)+(!A*B*R)+(A*B*R)
NORMALd (!A+B+!R)
Error!
Input the source formula:
A#B
Here!
4countTerms
NORMALc:(A*!B)+(!A*B)
NORMALd (A+B)*(!A+!B)
Error!
Input the source formula:
A@B
Here!
4countTerms
NORMALc:(!A*!B)+(A*B)
NORMALd (!A+B)*(A+!B)
Error!
#include
#include
#include
#include
using namespace std;
class formulaBase
{
private:
int numVar;//The number of the variables in the formula
bool variables[100];//To store the value of the variables
string sourceFormula;
string normalCFormula;
string normalDFormula;
string dualFormula;
vector vctofVar;
vector vctofPoland;
stack stk;
bool isVar(char ch)const;
void addMin(int minterm);
void addMax(int maxterm);
bool compute(int minterm);
void getInversePoland();
int countTerms(int n);
void assign(int minterm);
stack boolStk;
public:
formulaBase();
formulaBase(const formulaBase& rhs);
formulaBase();
void getSource();
string generateNormalC();
string generateNormalD();
string getDual();
void printSource()const{cout