Esempio n. 1
0
        //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}");
            }
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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());
        }
Esempio n. 4
0
        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());
            }
        }