Entwickler-Ecke

Open Source Projekte - Simple Calculator v1


delfiphan - Di 09.08.05 11:45
Titel: Simple Calculator v1
Mir ist bewusst, dass es schon sehr viele Taschenrechner für den PC gibt.

Ich habe diesen Taschenrechner erstellt, da ich den Code noch für ein anderes Projekt brauchen werde. Und eigentlich ist so ein Calculator noch ganz nützlich, da der Windows-Calculator für normale Rechnungen etwas mühsam zu bedienen ist.

Die Features:


Es handelt sich hier um eine erste Version. Je nach dem ob weitere Funktionen erwünscht sind mache ich weiter oder lasse es sein.

Zukünftige Versionen könnten bieten:
Definition von Funktionen "f(x) = x^2", Graphen zeichnen, u.a.

Beispiel:
Nullstelle der kubischen Funktion x^3-6x^2+11x-6 mittels Lösungsformel berechnen:

1) Definition der Ausdrücke für x1,x2,x3:

Simple Calculator Code (Copy-/Pastebar):
1:
2:
3:
x1 := 1/6/a*(36*c*b*a-108*d*a^2-8*b^3+12*a*(12*c^3*a-3*c^2*b^2-54*c*b*a*d+81*d^2*a^2+12*d*b^3)^(1/2))^(1/3)-2/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*a*(12*c^3*a-3*c^2*b^2-54*c*b*a*d+81*d^2*a^2+12*d*b^3)^(1/2))^(1/3)-1/3*b/a
x2 := -1/12/a*(36*c*b*a-108*d*a^2-8*b^3+12*a*(12*c^3*a-3*c^2*b^2-54*c*b*a*d+81*d^2*a^2+12*d*b^3)^(1/2))^(1/3)+1/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*a*(12*c^3*a-3*c^2*b^2-54*c*b*a*d+81*d^2*a^2+12*d*b^3)^(1/2))^(1/3)-1/3*b/a+1/2*j*3^(1/2)*(1/6/a*(36*c*b*a-108*d*a^2-8*b^3+12*a*(12*c^3*a-3*c^2*b^2-54*c*b*a*d+81*d^2*a^2+12*d*b^3)^(1/2))^(1/3)+2/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*a*(12*c^3*a-3*c^2*b^2-54*c*b*a*d+81*d^2*a^2+12*d*b^3)^(1/2))^(1/3))
x3 := -1/12/a*(36*c*b*a-108*d*a^2-8*b^3+12*a*(12*c^3*a-3*c^2*b^2-54*c*b*a*d+81*d^2*a^2+12*d*b^3)^(1/2))^(1/3)+1/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*a*(12*c^3*a-3*c^2*b^2-54*c*b*a*d+81*d^2*a^2+12*d*b^3)^(1/2))^(1/3)-1/3*b/a-1/2*j*3^(1/2)*(1/6/a*(36*c*b*a-108*d*a^2-8*b^3+12*a*(12*c^3*a-3*c^2*b^2-54*c*b*a*d+81*d^2*a^2+12*d*b^3)^(1/2))^(1/3)+2/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*a*(12*c^3*a-3*c^2*b^2-54*c*b*a*d+81*d^2*a^2+12*d*b^3)^(1/2))^(1/3))

2) Auswerten von x1,x2,x3 mit a=1,b=-6,c=11,d=-6:

Simple Calculator Code (Copy-/Pastebar):
1:
2:
a=1; b=-6; c=11; d=-6
x1;x2;x3


retnyg - Di 13.09.05 13:25

super programm ! user defined image

könntest du noch eine inttohex und hextoint funktion einbauen?
wenn möglich mit ganz kurzen funktionsnamen ;)


delfiphan - Di 13.09.05 15:57

Nun, der Rechner kennt nur einen Typ und zwar Extended (bzw. "Complex"). Damit IntToHex bzw. HexToInt geht müsste man den Parser erweitern... Viel Lust habe ich aber nicht, das umzuschreiben... ;)
Wenn du's selbst mal probieren möchtest ist der Source ja dabei ;)


retnyg - Do 15.09.05 13:00

hmm mod kann der auch nicht :gruebel:

könnteste nicht modulo einbauen, wenn man mit \ (backslash) dividiert, so wie bei visual basic ?


uall@ogc - Do 15.09.05 13:12

und wieso heißt das i bei dir j :P


delfiphan - Do 15.09.05 19:52

user profile iconretnyg hat folgendes geschrieben:
hmm mod kann der auch nicht :gruebel:

könnteste nicht modulo einbauen, wenn man mit (backslash) dividiert, so wie bei visual basic ?

Wie ist mod für komplexe Zahlen definiert? a mod b = a-floor(a/b)*b ?

user profile iconuall@ogc hat folgendes geschrieben:
und wieso heißt das i bei dir j :P

Weil der Parser in AXMDs Complex Calculator eingebaut werden sollte und er unbedingt j wollte ;) (Ändern kann man's auf Zeile 351 in complexParser.pas...)

Plots kann man übrigens hiermit [http://www.delphi-forum.de/viewtopic.php?t=37978] machen.