Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Stack: Infix nach Postfix und push und pop

  Alt 14. Mär 2010, 09:35
Guten Morgen 'Schlaflos in Kassel' (Luckie),

die Routine aus dem Buch liest die Eingabe von der Kommandozeile,
Delphi-Quellcode:
Init;
repeat
  repeat read(c) until c <> ' '; // Lese bis ein Zeichen kein Leerzeichen ist
  if c = ')then write(chr(pop)); // bei ')' hole ein Zeichen vom Stack
  if c = '+then push(ord(c));
  if c = '*then push(ord(c));
  while (c >='0') and (c<='9') do // Verarbeite Zeichen von '0' bis '9';
    begin write(c), read(c); end;
  if c <> '(then write (' ');
until eoln;
In Delphi würde ich die Eingabe als Zeichenkette erwarten
und die if durch case ersetzen.

Delphi-Quellcode:
function infix2postfix(infixStr: AnsiString):AnsiString;
var
  i: Byte;
begin
  init;
  result := '';
  for i:= 1 to length(infixStr) do
    begin
      case inifixStr[i] of
        ')' : result := result + chr(pop);
        '+' : push(ord(infixStr[i]);
        '*' : push(ord(infixStr[i]);
        '0'..'9' : result := result + infixStr[i];
        '(' : result := result + ' ';
    end;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat