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:
- Open Source
- Einfache Bedienung (Matlab-like)
- Unbeschränke Anzahl von Variablen/Expressions definierbar
- Rechnung mit komplexen Zahlen
- Lizenz: Free for any use, use at own risk
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 !
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
retnyg 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 ?
uall@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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!