Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#28

Re: Arrays mit drei Dimensionen... nicht einfach -.-

  Alt 14. Nov 2007, 07:47
ArchaicSeraphim, ich glaube, Du vermischt hier zwei Dinge:

Zum einen benötigst Du vermutlich einen Stack (Keller), und zum Anderen eine Zustandsübergangstabelle. Der Keller hat aber mit der Übergangstabelle nichts zu tun.

Für die Übergänge (Y',Z') bei Eingabezeichen X, Zustand Y und Kellerzustand Z) verwendest Du ein statisches 3D-'Array of TÜebergang', so etwa:
Delphi-Quellcode:
Type
  TEingabezeichenklasse = (ezA, ezB, ezIllegal); // Dein Alphabet
  TZustand = (zsNeutral, zsMehrAalsB, zsMehrBalsA, zsFehler); // Deine DEA-Knoten
  TKellerZustand = (kzA, kzB); // Deine Kellerzustände, kann aber Quark sein

  TUebergang = Record
    ZustandNeu : TZustand;
    KellerzustandNeu : TKellerZustand;
  End;

  TZustandsuebergangstabelle = Array [TEingabezeichenklasse,TZustand, TKellerZustand] Of TUebergang;
Sei nun ZT so eine Tabelle, e das Eingabezeichen, z der aktuelle Zustand und k der aktuelle Kellerzustand, dann findest Du den nächsten Zustand so:
Delphi-Quellcode:
Var
  ZT : TZustandsuebergangstabelle;
  e : TEingabezeichenklasse;
  z : TZustand;
  k : TKellerzustand;

Begin
 ...
 DerNeueZustand := ZT[e,z,k].ZustandNeu;
 DerNeueKellerzustand := ZT[e,z,k].KellerzustandNeu;
...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat