//Form Event Handlers private void BtnParse_Click(object sender, EventArgs e) { string userInput = TbFormulaInput.Text.Trim(); try { if (userInput.Length < 4) { throw new Exception("Format of input is not correct"); } else { _graphImages.Clear(); _binaryTreeNormal = ParsingModule.Parse(userInput); var rootOfNormalBinaryTree = _binaryTreeNormal.Root as CompositeComponent; _nandify.Calculate(rootOfNormalBinaryTree); _truthTable = new TruthTable(_binaryTreeNormal); _truthTableNand = new TruthTable(Nandify.BinaryTree); _truthTable.ProcessDnf(); PopulateTextBoxesWithValues(rootOfNormalBinaryTree); PopulateListBoxesWithValues(); PopulatePictureBoxWithImages(rootOfNormalBinaryTree); } } catch (Exception ex) { MessageBox.Show($@"{ex.Message}"); } }
private void btnReadNAND_Click(object sender, EventArgs e) { string proposition = myTree.DisplayOnlyNAND(); myTree.InsertTree(proposition); TruthTable myTruthTable = new TruthTable(myTree.GetRoot()); lbDisjunctiveNormalForm.Items.Clear(); //display tbOutputInfix.Text = myTree.DisplayInOrder(); tbTruthTable.Text = myTruthTable.GetTableInString(); tbHashCode.Text = myTruthTable.GetTruthTableHashCode(); lbDisjunctiveNormalForm.Items.Add(myTruthTable.DisjunctiveNormalForm()); tbSimplified.Text = myTruthTable.MinimizeTruthTable(); tbSimplifiedDisjunction.Text = myTruthTable.SimplifiedTableDisjunctiveForm(); }
private void btnReadDisjunction_Click(object sender, EventArgs e) { //convert infix to prefix TruthTable myTruthTable = new TruthTable(myTree.GetRoot()); string prefixForm = myTree.InfixToPrefix(myTruthTable.DisjunctiveNormalForm()); //create tree myTree.InsertTree(prefixForm); lbDisjunctiveNormalForm.Items.Clear(); lbNAND.Items.Clear(); //display tbOutputInfix.Text = myTree.DisplayInOrder(); myTruthTable = new TruthTable(myTree.GetRoot()); tbTruthTable.Text = myTruthTable.GetTableInString(); tbHashCode.Text = myTruthTable.GetTruthTableHashCode(); lbDisjunctiveNormalForm.Items.Add(myTruthTable.DisjunctiveNormalForm()); lbNAND.Items.Add(myTree.DisplayOnlyNAND()); }
private void btnRead_Click(object sender, EventArgs e) { //clear lb lbBoundVar.Items.Clear(); lbUnboundVar.Items.Clear(); //enable button btnDraw.Enabled = true; btnDrawProofTree.Enabled = true; //create binary tree string proposition = tbInput.Text; //create normal tree myTree.InsertTree(proposition); //check input if (FunctionHelper.EvaluateFormula(proposition)) { tbOutputInfix.Text = myTree.DisplayInOrder(); foreach (var v in myTree.GetBoundVar()) { lbBoundVar.Items.Add(v); } foreach (var v in myTree.GetUnboundVar()) { lbUnboundVar.Items.Add(v); } } else { btnReadDisjunction.Enabled = true; btnReadNAND.Enabled = true; TruthTable myTruthTable = new TruthTable(myTree.GetRoot()); lbNAND.Items.Clear(); lbDisjunctiveNormalForm.Items.Clear(); //display tbOutputInfix.Text = myTree.DisplayInOrder(); tbTruthTable.Text = myTruthTable.GetTableInString(); tbHashCode.Text = myTruthTable.GetTruthTableHashCode(); lbDisjunctiveNormalForm.Items.Add(myTruthTable.DisjunctiveNormalForm()); tbSimplified.Text = myTruthTable.MinimizeTruthTable(); tbSimplifiedDisjunction.Text = myTruthTable.SimplifiedTableDisjunctiveForm(); lbNAND.Items.Add(myTree.DisplayOnlyNAND()); } }