Wahrheitstabelle mit Implikation

JimmyFly

Mitglied
Hallo,

da ich blutiger Anfänger in Sachen Java habe ich so meine Probleme mit dieser Aufgabe:


"Schreiben Sie ein Java-Programm, das die Wahrheitstabelle zu folgendem logischen Ausdruck
erzeugt.
(¬(A v B) v (C ^ D)) ⇒ ((A ^ ¬B) ^ A)
Geben Sie in der Tabelle für jeden Teilterm den Wert aus. Alle Werte sollen durch das Programm
ermittelt werden.

Bem: ⇒ Implikation"


Wie geht man an diese Aufgabe am besten ran? Wie ist das vorgehen?
 

ARadauer

Top Contributor
Kollegen fragen: Das ist die 4. Frage diese Woche zum gleichen Thema. Leute sprecht doch miteinander, ihr geht sicher alle in den selben kurs...

Wie geht man an diese Aufgabe am besten ran? Wie ist das vorgehen?
4 verschachtelte for schleifen für A, B, C, D und dann ganz innen das Ergebniss des ausdrucks inkl Parameter ausgeben.
Für diese logischen Ausdrücke gibt es in Java entsprechende Operatoren...

btw: was hat das mit datenbanken zu tun?
 

knucki

Aktives Mitglied
Wenn du ihn geschrieben hast und hier postest sicherlich.

Statt der For-Schleifen, könntest du dich auch mit dem Thema Rekursion auseinandersetzen...
 

knucki

Aktives Mitglied
Fragst du gerade ernsthaft danach, ob dir jemand deine Hausaufgaben macht?

Du hast noch nicht einmal einen Ansatz entwickelt, den sich die Leute hier mal angucken könnten, um dich auf den richtigen Weg zu schubsen. Aber nach einer Lösung fragen.
 

JimmyFly

Mitglied
So ich habe jetzt eine Lösung aber es passt noch was an der Formatierung nicht.... wie schafft man eine richtige formatierung dieser Tabelle?

Java:
public class tabelle {
  public static void main (String[] args) throws java.lang.Exception {
 
	System.out.println(" a | b | c | d | a v b | !(a v b) | c & d | !(a v b) v c & d | !b | a & !b | a & !b & a | !(a v b) v c & d -> a & !b & a");
     produziereWahrheitstabelle(false,false,false,false);
     produziereWahrheitstabelle(false,false,false,true);
     produziereWahrheitstabelle(false,false,true,false);
     produziereWahrheitstabelle(false,false,true,true);
     produziereWahrheitstabelle(false,true,false,false);
     produziereWahrheitstabelle(false,true,false,true);
     produziereWahrheitstabelle(false,true,true,false);
     produziereWahrheitstabelle(false,true,true,true);
     produziereWahrheitstabelle(true,false,false,false);
     produziereWahrheitstabelle(true,false,false,true);
     produziereWahrheitstabelle(true,false,true,false);
     produziereWahrheitstabelle(true,false,true,true);
     produziereWahrheitstabelle(true,true,false,false);
     produziereWahrheitstabelle(true,true,false,true);
     produziereWahrheitstabelle(true,true,true,false);
     produziereWahrheitstabelle(true,true,true,true);
  }
 

Landei

Top Contributor
Wie gesagt kannst du das mit Schleifen lösen:

Java:
boolean[] bools = {false, true};
for(boolean a : bools)
  for(boolean b : bools)
     for(boolean c : bools)
        for(boolean d : bools) 
           produziereWahrheitstabelle(a,b,c,d);

Bei der Tabellenformatierung hilft entweder
Code:
String.format
weiter, wobei du Breiten für die entsprechenden Formatsymbole angeben musst, oder du trickst mit Tabs ([c]"\t"[/c]) rum, was manchmal einfacher ist.
 
Zuletzt bearbeitet:

knucki

Aktives Mitglied
Hehe .NET :D

Also wenn du dich schon mal mit Php beschäftig hast, wäre dir das da schon untergekommen:

foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement

Oder noch älter "Perl":

foreach my $eintrag (@a){
print "$eintrag ";
}

Der Gedanke dahinter ist Asbach-Uralt
 

Jango

Gesperrter Benutzer
Als ich mich noch mit Java beschäftigt habe, gabs das in dieser Sprache nicht.
Man gleicht sich also an und nutzt auch 'Inspirationen' anderer. Enums gibts in Java ja auch erst nach dem C# damit ausgerüstet wurde... ;) In C++ gibts das schon ewig.
 
Zuletzt bearbeitet:
J

JohannisderKaeufer

Gast
Die foreach-Schleife wurde mit dem JDK 1.5 eingeführt.
Das JDK 1.5 release war am 29.09.2004.

Spätestens seit dem beschäftigst du dich laut eigener Aussage nicht mehr mit Java und registrierst dich dann allerdings zwei Jahre später im Javaforum.
 

dima4400

Mitglied
hey leute,
dazu nochmal eine Frage:

ich habe meine Wahrheitstabelle jetzt fertig, jedoch habe ich Sie extra NICHT mit Arrays gemacht.
Eigentlich bin ich ganz zufrieden damit, das Problem ist nur, dass die Ergebnisse bei der Ausgabe nicht unter den Eigenschaften stehen.

Wie kann ich also das Programm richtig formatieren?
Hier der Java-Code:

Java:
import java.util.*;

public class Wahrheitstabelle {
	public static void main (String[] args) {
	
	Scanner in = new Scanner (System.in);
	
	System.out.println("\n");
	
	boolean a, b, c, d;
	
	for (int i=0; i<=1; i++) {
		if (i==0) {a = false;}
		else {a = true;}
		
		for (int j=0; j<=1; j++) {
			if (j==0) {b = false;}
			else {b = true;}
		
			for (int k=0; k<=1; k++) {
				if (k==0) {c = false;}
				else {c = true;}
			
				for (int l=0; l<=1; l++) {
					if (l==0) {d = false;}
					else {d = true;}
				
				boolean m = !(a||b);
				boolean n = (c&&d);
				boolean o = m||n;
				
				boolean p = (a&&!b);
				boolean q = p&&a;
				
				boolean r = !o|q;
				
				System.out.println("A\tB\tC\tD\tlinke Seite\trechte Seite\tGesamtergebnis");
				System.out.println(a+"\t"+b+"\t"+c+"\t"+d+"\t"+o+"\t"+q+"\t"+r);
				}
			}
		}
	}
	}
}
 

Neue Themen


Oben