Recall that a proposition is a statement that is either true
Solution
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class proposition {
private static char[][] symb=new char[][]{{\'p\',\'q\',\'r\'},
{\'T\',\'T\',\'T\'},
{\'T\',\'T\',\'F\'},
{\'T\',\'F\',\'T\'},
{\'T\',\'F\',\'F\'},
{\'F\',\'T\',\'T\'},
{\'F\',\'T\',\'F\'},
{\'F\',\'F\',\'T\'},
{\'F\',\'F\',\'F\'}};
private static String getDNF(int i)
{
String res=\"\";
if(symb[i][0]==\'T\')
res = res + symb[0][0]+\"\";
else
res = res + symb[0][0]+\"\'\";
if(symb[i][1]==\'T\')
res = res + symb[0][1]+\"\";
else
res = res + symb[0][1]+\"\'\";
if(symb[i][2]==\'T\')
res = res + symb[0][2]+\"\";
else
res = res + symb[0][2]+\"\'\";
return res;
}
private static String getCNF(int i)
{
String res=\"(\";
if(symb[i][0]==\'T\')
res = res + symb[0][0]+\"\'+\";
else
res = res + symb[0][0]+\"+\";
if(symb[i][1]==\'T\')
res = res + symb[0][1]+\"\'+\";
else
res = res + symb[0][1]+\"+\";
if(symb[i][2]==\'T\')
res = res + symb[0][2]+\"\'\";
else
res = res + symb[0][2]+\"\";
res=res+\")\";
return res;
}
public static void main(String args[]) throws IOException
{
String CNF=\"\",DNF=\"\";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(\"This program finds compound statements(in CNF and/or DNF) that have a given truth table\");
System.out.println(\"The statements have 3 propositional variables: p, q, and r.\");
System.out.println(\"Please enter the truth values for each row of the truth table.\");
for(int i=1;i<=8;i++)
{
System.out.print(\"p=\"+symb[i][0]+\", q=\"+symb[i][1]+\", r=\"+symb[i][2]+\". Truth value is (T/F):\");
String ch= br.readLine();
if(ch.equals(\"T\"))
{
DNF=DNF+getDNF(i)+\" + \";
}
else if(ch.equals(\"F\"))
CNF=CNF+getCNF(i)+\" \";
else
{
System.out.println(\"Invalid Input!\");
return;
}
}
if(CNF.isEmpty()==false)
{
System.out.println(\"CNF expression for the truth table is: \");
System.out.println(CNF);
}
if(DNF.isEmpty()==false)
{
System.out.println(\"DNF expression for the truth table is: \");
DNF=DNF.substring(0, DNF.length()-2);
System.out.println(DNF);
}
}
}

