![]() |
AW: Bedingungen mit Boolean und Listbox ausgeben
Meine Güte, wenn die Dinger doch vorgegeben wurden...
|
AW: Bedingungen mit Boolean und Listbox ausgeben
Ich hab die Aufgabe zwar nicht richtig verstanden, aber egal. Hier zumindest die Tabausgabe. Zwar wird dir dein Lehrer das nicht abnehmen, aber wenn er die Ausgabe in ListBox haben will...
Delphi-Quellcode:
const
Tabs = 4; X: array[Boolean] of String = ('False', 'True'); var ListBox: TListBox; TabsInLB: array[0..4] of Integer; A, B, C, BB : Boolean; S: String; begin ListBox := ListBox1; TabsInLB[0] := 0; TabsInLB[1] := 50; TabsInLB[2] := 100; TabsInLB[3] := 150; Listbox.TabWidth := 1; SendMessage(ListBox.Handle, LB_SETTABSTOPS, Tabs, Longint(@TabsInLB)); A := False; B := False; C := False; FOR A := False TO True DO FOR B := False TO True DO FOR C := False TO True DO begin BB := (A AND C) OR (NOT A AND NOT C) //ob das stimmt, glaube ich nicht, aber ich hab es übernommen. Evtl. fehlen da paar Klammern. AND (B OR C) OR (B AND C) AND (A OR B) OR (NOT A AND NOT B); S := X[A] + #9 + X[B] + #9 + X[C] + #9 + X[BB]; ListBox.Items.Add(S) end; end; |
AW: Bedingungen mit Boolean und Listbox ausgeben
Wie soll die Ausgabe denn nun aussehen?
|
AW: Bedingungen mit Boolean und Listbox ausgeben
Hier, falls die Annahme vom Schönen Guntar stimmt:
Delphi-Quellcode:
EDIT:
const
Tabs = 6; X: array[Boolean] of String = ('False', 'True'); var ListBox: TListBox; TabsInLB: array[0..Tabs] of Integer; A, B, C, D, E, F : Boolean; S: String; begin ListBox := ListBox1; TabsInLB[0] := 0; TabsInLB[1] := 50; TabsInLB[2] := 100; TabsInLB[3] := 150; TabsInLB[4] := 200; TabsInLB[5] := 250; Listbox.TabWidth := 1; SendMessage(ListBox.Handle, LB_SETTABSTOPS, Tabs, Longint(@TabsInLB)); A := False; B := False; C := False; S := 'A' + #9 + 'B' + #9 + 'C' + #9 + 'D' + #9 + 'E' + #9 + 'F'; ListBox.Items.Add(S); FOR A := False TO True DO FOR B := False TO True DO FOR C := False TO True DO begin D := (A AND C) OR (NOT A AND NOT C); E := (B OR C) OR (B AND C); F := (A OR B) OR (NOT A AND NOT B); S := X[A] + #9 + X[B] + #9 + X[C] + #9 + X[D] + #9 + X[E] + #9 + X[F]; ListBox.Items.Add(S) end; end; Oder doch nicht. Ich weiß es nicht. |
AW: Bedingungen mit Boolean und Listbox ausgeben
Meine Version ist irgendwie simpler, sowohl im Code wie auch in der Darstellung:
Delphi-Quellcode:
Wobei ich auch nur raten kann, wie es denn aussehen soll.
function MultiBoolToStr(a, b, c: Boolean): string;
begin Result := BoolToStr(a, true) + ', ' + BoolToStr(b, true) + ', ' + BoolToStr(c, true); end; procedure TForm1.Button1Click(Sender: TObject); var a, b, c, a1, b1, c1: Boolean; s: string; begin for a := false to true do for b := false to true do for c := false to true do begin a1 := (A AND C) XOR (NOT A AND NOT C); b1 := B OR C; c1 := A XOR B; s := MultiBoolToStr(a, b, c); if a1 and b1 and c1 then s := s + ' -> Treffer'; ListBox1.Items.Add(s); end; end; |
AW: Bedingungen mit Boolean und Listbox ausgeben
Zitat:
Es ist da wie bei den ENUMs, wo man dann ja auch DOWNTO verwendet. Man muß nur aufpassen, wenn jemand nett war und das True umgeschrieben hat. :lol:
Delphi-Quellcode:
Aber das macht man ja nicht.
const True = Boolean(255);
PS: Ich würde nur eine Schleife verwenden und das dann mathematisch oder binär befüllen. |
AW: Bedingungen mit Boolean und Listbox ausgeben
Zitat:
|
AW: Bedingungen mit Boolean und Listbox ausgeben
OK, bei Hausaufgaben ist das ja immer etwas Anderes,
und mit einem guten Kommentar isses auch wieder verstänlich. :mrgreen: |
AW: Bedingungen mit Boolean und Listbox ausgeben
Also wie man eine aussagekräftige Anzeige von 3 Eingangswerten und einem Ausgangswert mit 3 "Spalten" realisieren soll ist mir schleierhaft.
Entweder hat hier der Lehrkörper geschlampt, oder es handelt sich um das Stille-Post-Syndrom (wieder mal nur die Hälfte gehört und die noch falsch wiedergegeben). Der direkteste Lösungsweg wäre (wenn ich die Vorgabe mal frei erweitere um der Ausgabe eine Aussagekraft zu verleihen):
Delphi-Quellcode:
procedure TForm1.B_StartClick(Sender: TObject);
var A, B, C, BB : boolean; begin // Listbox für die Ausgabe leeren (steht nicht in der Aufgabe, habe ich mal frei dazugesetzt) Ausgabe_Listbox.Clear; FOR A := false TO true DO FOR B := false TO true DO FOR C := false TO true DO begin BB := {Bedingung 1} ( (A AND C) OR (NOT A AND NOT C) ) AND {Bedingung 2} ( (B OR C) OR (B AND C) ) AND {Bedingung 3} ( (A OR B) OR (NOT A AND NOT B) ); // Ausgabe der Werte in der Listbox Ausgabe_Listbox.Items.Add( {Eingangswert A} BoolToStr( A, true ) + ' ' + {Eingangswert B} BoolToStr( B, true ) + ' ' + {Eingangswert C} BoolToStr( C, true ) + ' ' + {Ausgangswert BB} BoolToStr( BB, true ) ); end; end; |
AW: Bedingungen mit Boolean und Listbox ausgeben
*Öhm*...
Zitat:
Zitat:
Delphi-Quellcode:
es müsste aber wahrscheinlich heißen
BB :=
{Bedingung 1} (A AND C) OR ((NOT A AND NOT C) AND {Bedingung 2} (B OR C)) OR ((B AND C) AND {Bedingung 3} (A OR B)) OR (NOT A AND NOT B);
Delphi-Quellcode:
Da deklariere ich mir lieber 3 Variablen, das ist übersichtlicher ;)
BB :=
{Bedingung 1} ((A AND C) OR (NOT A AND NOT C)) AND {Bedingung 2} ((B OR C) OR (B AND C)) AND {Bedingung 3} ((A OR B) OR (NOT A AND NOT B)); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz