Einzelnen Beitrag anzeigen

Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#16

Re: Taschenrechner mit Zwischenergebnis programmieren

  Alt 24. Jun 2004, 21:13
Hallo Flo,

du musst tatsächlich, wenn du einen Operator findest, der schwächer bindet, als der oberste auf dem Stack, diesen und alle weiteren (in einer Schleife) vom Stack abarbeiten, bis du auf einen Operator triffst, der wieder schwächer bindet.

Beispiel:

3+4*5^2* ergibt auf dem
NumStack:3 4 5 6
OpStack: + * ^
AktOp: *

* bindet schwächer als ^, also alte Operation ausführen und Zwischergebnis zurück auf den Stack.

NumStack 3 4 25
OpStack: + *

Der obere Operator bindet nicht schwächer als der aktuelle und kann auch noch abgearbeitet werden:

Num Stack 3 100
OpStack: +

Der obere Operator (+) bindet jetzt aber schwächer als der aktuelle * und darf noch nicht abgearbeitet werden.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat