Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Wissenschaftlicher Taschenrechner (https://www.delphipraxis.net/40896-wissenschaftlicher-taschenrechner.html)

Don_Bigguz 13. Mär 2005 20:02

Re: Wissenschaftlicher Taschenrechner
 
Hallo
Kannst du auch den Quellcode veröffentlichen? Oder soll der nur dir vorbehalten bleiben, oder nur verfügbar werden, wenn du ganz fertig bist? ;-)

MFG

xDestiny 14. Mär 2005 10:15

Re: Wissenschaftlicher Taschenrechner
 
würd mich auch mal interesieren, wie du das alles so gemacht hast. ich muss für die schule auch son ding schreiben...

Also wär coll, wenn du den Sourcecode mal hier dran hängen könntest.

.:: Greetz xDestiny ::.

Thunderchild 14. Mär 2005 10:48

Re: Wissenschaftlicher Taschenrechner
 
Mach ich vielleicht wirklich spaeter. Aber er ist ja immer noch nicht fertig. Hier nur mal eben die Version mit der korrigierten Klammernrechnung.

Zum Implementation: ich habe fuer die Operationen einen Aufzaehlungstyp, in dem alle verfuegbaren Operationen drin stehen. Dann habe ich in einem Array dieses Typs die Rangfolge festgehalten.

Delphi-Quellcode:
  tOperatorType=(oNone,oValue,oVariable,oExec,
                 oAdd,oSub,oMul,oDiv,
                 oFac,oRec,oAbs,oPO,oPC,
                 oLn,oLog,oRt,oSqrt,oPi,
                 oPwrE,oPwr10,oPwr,oSq,oCb,
                 oSin,oSinh,oASin,oASinh,
                 oCos,oCosh,oACos,oACosh,
                 oTan,oTanh,oATan,oATanh);
  const OperatorPriority:array[tOperatorType] of byte=(
                 9,0,0,9, 3,3,2,2, 1,1,1,5,4, 1,1,1,1,0, // ..Pi
                 1,1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1);
Sodass ich dann in der Berechnungsprozedur (abgesehen von Spezialfaellen, die zuvor abgehandelt werden) nur noch eine Whileschleife drin hab:

Delphi-Quellcode:
  while (OperatorPriority[ReadOperator]<=OperatorPriority[NewOperator])
    and (OperatorCount>0) do begin
    temp:=CalculateOperation;
    PushOperand(temp);
  end;
ReadOperator liest den obersten Operator vom Stack, ohne ihn zu loeschen. CalculateOperation tut das dann mit loeschen und holt auch so viele Operanden vom Operandenstack, wie fuer die Operation benoetigt. Das Ergebnis wird dann auf den Operandenstack zurueck geschrieben, sodass es fuer das naechste CalculateOperation wieder als Operand verfuegbar ist.

Thunderchild 19. Mär 2005 21:35

Re: Wissenschaftlicher Taschenrechner
 
Liste der Anhänge anzeigen (Anzahl: 2)
Neue Version: ich habe angefangen, das Digitaldisplay zu implementieren.
Hab soeben die Anzeige der Zehnerpotenz (so einigermassen) abgeschlossen.
Weil das Display groesser ist als vorher, ist auch der Rechner selbst etwas groesser geworden.
Ist das Display gut lesbar so?

Fuer die neue Anzeige gibt es auch die Option der frei waehlbaren Farbschattierung (von nicht wirksam bis etwa 1/3), und die Anzeige der Tausendertrennzeichen funktioniert damit jetzt auch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:09 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz