-
January 20th, 2010, 04:11 AM
#1
Manipulation of Logic clauses using C++
i need help in evaluation of logical clauses(DNF and CNF) using c++.
wat i wan is :
user input a logical clauses as in DNF, then i have to convert it to CNF. and the truth table for both dnf n cnf has to be evaluated.
example:
input is !(A&&!B) , then i will get !A||B as the conversion result, and a truth table evaluating all the true n false with regard to A and B.
A B !(A&&!B) !A||B
1 1 1 1
1 0 0 0
0 1 1 1
0 0 1 1
i was thinking of getting user input as a line of string but then i do not know wat to do next.perhaps further dissecting the string into smallest component and then evaluate one by one and join them ?
such as !(A&&!B) , i break it down into evaluate A first, then !B, and then (A AND !B), finaly evaluate !(A AND B)?
this works for simple clauses. to deal with complicated clauses, a lot of conditions which might seem tedious to do.
i do not require reply of whole programming code,but a reference would be great. Pls suggest any functions n syntaxes which u think are relavent.
thx for ur help.
-
January 20th, 2010, 05:15 AM
#2
Re: Manipulation of Logic clauses using C++
1. Get line in memory
2. Read characters until a space or an operator
3. If you have found a variable (operand), store its name
4. If you have found an operator, call a function handling that operation
etc.
You have unary operations (! not) and binary operations (&& and, || or). You can also have parentheses.
You can build a stack and use a Reverse Polish algorithm.
Or you can have a recursive approach.
Good luck to you.
-
January 21st, 2010, 12:37 AM
#3
Re: Manipulation of Logic clauses using C++
hmm a stack, i got another suggestion from other forum on using flex n bison which works similar to stacks.
ill try to work it out, tq
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|