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