wahrheitstabelle

kirkikor

Mitglied
hallo,
ich muss eine wahrheitstabelle als java-programm schreiben.

das hier ist der ausdruck:
(¬(A \/ B) \/ (C /\ D)) ⇒ ((A /\ ¬B) /\ A)

die teilterme sollen im programme ebenfalls ausgedruckt werden.

ich habe mein programm geschrieben, aber bekomme ständig falsche wahrheitswerte heraus.
könnte mir jmd bei der korrektur helfen?!


Java:
import java.util.Scanner;


public class wahrheitstabelle {	

  public static void main (String[] argv) {

	Scanner eingabe = new Scanner(System.in);
	
	boolean [] a = {true, false};
	boolean [] b = {true, false};
	boolean [] c = {true, false};
	boolean [] d = {true, false};
	boolean e,f,g,h,m;
	
	System.out.println("a \t b \t c \t d \t !(a v b) (c & d) !(a v b) v (c & d) (a & !b) (a & !b) & a implikation");
	

	for (int i = 0; i<2; i++)	{
		for (int j = 0; j<2; j++)	{
			for (int k = 0; k<2; k++)	{
				for (int l = 0; l<2; l++)	{
				
					if (a[0]||b[0])	{		//!(a v b)
						e = false;
					}
					else	{
						e = true;
					}
					
					if (c[0] && d[0])	{		//(c & d)
						f = true;
					}
					else	{
						f=false;
					}
					if (e==true || f==true)	{		//!(a v b) v (c & d)
						g = true;
					}
					else	{
						g=false;
					}
					if (a[0]&&b[1])	{		//(a & !b)
						h = true;
					}
					else	{
						h = false;
					}
					if (h=true&&a[0])	{		//(a & !b) & a
						m = true;
					}
					else	{
						m = false;
					}
					
					System.out.println(a[i]+"\t "+b[j]+"\t "+c[k]+"\t "+d[l]+"\t"+ e +"\t"+ f +"\t"+ g +"\t"+ h +"\t"+ m );
				}
			}
		}
	}
	
	
	
	
				
  } // main
	
} // class wahrheitstabelle
 

kirkikor

Mitglied
ok, ich habe die zeile 50 umgeändert in

h==true&&a[0]



jedoch verstehe ich die bemerkung von final_striker nicht.
!(a v b) bekommt doch genau dann den wahrheitwert falsch zugeordnet, wenn a oder b wahr sind.
sollte ich es lieber so schreiben:

if ( (a==true) || (b[j]==true) ) {...}
 

ARadauer

Top Contributor
Macht ihr den selben Kurs?
http://www.java-forum.org/hausaufgaben/135259-wahrheitstabelle-implikation.html
http://www.java-forum.org/java-basics-anfaenger-themen/135426-wahrheitstabelle.html


jedoch verstehe ich die bemerkung von final_striker nicht.
a[0] macht keinen sinn, das ist true, du musst natürlich den schleifenzähler verwenden...

kleiner Tipp mach im ersten Schritt nicht
(¬(A \/ B) \/ (C /\ D)) ⇒ ((A /\ ¬B) /\ A)
sondern
A \/ B
und versuch das zu verstehen...
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...

Neue Themen


Oben