Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Digitaltechnik: Wahrheitstabelle generieren (https://www.delphipraxis.net/68749-digitaltechnik-wahrheitstabelle-generieren.html)

mr-unbekannt 4. Mai 2006 19:12


Digitaltechnik: Wahrheitstabelle generieren
 
hallo, vielleicht sind ja ein paar hier an digitaltechnik interressiert...

ich habe ein kleines Problem... ich möchte eine Wahrheitstabelle generieren
diese soll den kompletten eingangsbereich mit bits ausfüllen
ich schaffe es nicht, bei E0 abwechselnd 0 und 1 einzufüllen..
könte mir bitte jemand helfen?

vielen dank

Delphi-Quellcode:
procedure TForm1.SpinEdit1Change(Sender: TObject);
var i:Integer;
begin
sg1.ColCount := SpinEdit1.Value;
sg1.RowCount :=Sqr(SpinEdit1.Value)+1;
for i := 1 to Sqr(SpinEdit1.Value) do begin
sg1.Cells[SpinEdit1.Value-1, i]:= '0';
end;


end;

marabu 4. Mai 2006 20:00

Re: Digitaltechnik: Wahrheitstabelle generieren
 
Hallo.

Da gibt es ein paar threads:

Wahrheitstabellen
Alle Boolschen Operatoren

Was das Befüllen der Spalte E0 angeht, so solltest du mal eine Skizze machen, wie deine Tabelle aussehen soll.

Delphi-Quellcode:
procedure TForm1.SpinEdit1Change(Sender: TObject);
var
  i: Integer;
begin
  with StringGrid do
  begin
    ColCount := SpinEdit.Value;
    RowCount := Sqr(SpinEdit.Value) + FixedRows;
    for i := 1 to Sqr(SpinEdit.Value) do
      Cells[SpinEdit.Value-1, i] := IntToStr(1 - i mod 2);
  end;
end;
Grüße vom marabu

mr-unbekannt 5. Mai 2006 18:42

Re: Digitaltechnik: Wahrheitstabelle generieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
momentan schaffe ich es, die erste reihe abwechselnd mit 1 und 0 zu füllen,
ich bringe es auch zusammen, dass es mir die nächsten spalten auffült, jedoch in falscher reihenfolge..

der Code:

Delphi-Quellcode:
procedure TForm1.SpinEdit1Change(Sender: TObject);
var
  i,j: Integer;
  p: Real;
begin
p:= 1;
for j := 1 to SpinEdit1.Value do p := p*2;
  with sg1 do
  begin
    ColCount := SpinEdit1.Value;
    RowCount := trunc(p) + FixedRows;

    for i := 1 to trunc(p) do
      Cells[SpinEdit1.Value-1, i] := IntToStr(1 - i mod 2);
    for i := 1 to trunc(p) do
      Cells[SpinEdit1.Value-2, i] := IntToStr(1 - i div 2 mod 2);
    for i := 1 to trunc(p) do
      Cells[SpinEdit1.Value-3, i] := IntToStr(1 - i div 4 mod 2);


end;

end;
sreenshot von falsch angeordneten zahlen dabei

marabu 5. Mai 2006 19:09

Re: Digitaltechnik: Wahrheitstabelle generieren
 
Kopf hoch - du schaffst das:

Delphi-Quellcode:
procedure FillGrid(sg: TStringGrid; bits: Byte);
var
  iCol, iRow, iRows: Integer;
begin
  iRows := 1 shl bits;
  with sg do
  begin
    ColCount := bits;
    RowCount := iRows + FixedRows;

    for iCol := 1 to ColCount do
      for iRow := 0 to Pred(iRows) do
        Cells[ColCount - iCol, FixedRows + iRow] := IntToStr(Ord(Odd(iRow shr Pred(iCol))));
  end;
end;

procedure TDemoForm.SpinEditChange(Sender: TObject);
begin
  FillGrid(StringGrid, SpinEdit.Value);
end;
Freundliche Grüße vom marabu

marabu 7. Mai 2006 10:47

Re: Digitaltechnik: Wahrheitstabelle generieren
 
Die Zuweisung in der inneren Schleife sollte besser so aussehen:

Delphi-Quellcode:
Cells[ColCount - iCol, FixedRows + iRow] := IntToStr(iRow shr Pred(iCol) mod 2);
Hat den gleichen Effekt, ist aber didaktisch wertvoller.

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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