Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Bedingungen mit Boolean und Listbox ausgeben (https://www.delphipraxis.net/179396-bedingungen-mit-boolean-und-listbox-ausgeben.html)

DeddyH 4. Mär 2014 19:25

AW: Bedingungen mit Boolean und Listbox ausgeben
 
Meine Güte, wenn die Dinger doch vorgegeben wurden...

Popov 4. Mär 2014 19:38

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;

DeddyH 4. Mär 2014 19:44

AW: Bedingungen mit Boolean und Listbox ausgeben
 
Wie soll die Ausgabe denn nun aussehen?

Popov 4. Mär 2014 19:48

AW: Bedingungen mit Boolean und Listbox ausgeben
 
Hier, falls die Annahme vom Schönen Guntar stimmt:

Delphi-Quellcode:
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;
EDIT:

Oder doch nicht. Ich weiß es nicht.

DeddyH 4. Mär 2014 19:50

AW: Bedingungen mit Boolean und Listbox ausgeben
 
Meine Version ist irgendwie simpler, sowohl im Code wie auch in der Darstellung:
Delphi-Quellcode:
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;
Wobei ich auch nur raten kann, wie es denn aussehen soll.

himitsu 4. Mär 2014 19:53

AW: Bedingungen mit Boolean und Listbox ausgeben
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1250622)
Ja, technisch geht das, aber potthässlich ist es trotzdem. Lass den armen nur einmal statt
Delphi-Quellcode:
for variable := False to True
einmal
Delphi-Quellcode:
for variable := True to False
schreiben und sich dann wundern warum nichts mehr geht.

Dafür gibt es ja den Debugger :zwinker:

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:
const True = Boolean(255);
Aber das macht man ja nicht.



PS: Ich würde nur eine Schleife verwenden und das dann mathematisch oder binär befüllen.

DeddyH 4. Mär 2014 19:57

AW: Bedingungen mit Boolean und Listbox ausgeben
 
Zitat:

Zitat von himitsu (Beitrag 1250632)
PS: Ich würde nur eine Schleife verwenden und das dann mathematisch oder binär befüllen.

Ich würde das nehmen, was in der Aufgabe vorgegeben wurde. Es muss ja zumindest noch halbwegs verständlich sein, die Variablenbezeichner sind ja schon schlimm genug.

himitsu 4. Mär 2014 20:32

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:

Sir Rufo 5. Mär 2014 07:14

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;

DeddyH 5. Mär 2014 07:20

AW: Bedingungen mit Boolean und Listbox ausgeben
 
*Öhm*...
Zitat:

Delphi-Quellcode:
  A := false;
  B := false;
  C := false;

Überflüssig, sind im Anschluss die Schleifenvariablen.
Zitat:

Delphi-Quellcode:
       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);

entspricht
Delphi-Quellcode:
       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);
es müsste aber wahrscheinlich heißen
Delphi-Quellcode:
       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));
Da deklariere ich mir lieber 3 Variablen, das ist übersichtlicher ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:38 Uhr.
Seite 2 von 3     12 3      

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