Entwickler-Ecke
Freeware Projekte - Extended Math - Programm für Funktionsdarstellung
harald mittermeier - Mo 30.10.06 13:21
Titel: Extended Math - Programm für Funktionsdarstellung
Extended Math ist mein neues Delphi-Projekt derzeit.
Darstellen kann es
- rationale Funktionen,
- (einfache) gebrochenrationale Funktionen,
- Listen graphisch (--> Plottfunktion)
- ...
Ich habe für mein Programm eigens mehrere Prozeduren geschrieben, die
den String aus einem der fünf Editfelder Schritt für Schritt zerlegen,
bis ein Term wie "(x+3)*(x-8)/(x-5)"
zu z.B. "(1+3)*(1-8)/(1-5)", "(4*(-7))/(-4)", u.s.w. wird und dann
als einfache Division "28/4" berechenbar wird.
Es kann bei komplizierteren Funktionen notwendig sein, mehrere Klammern
zu verwenden, da die Prozedur von links nach rechts vorgeht und
gegebenenfalls die "Punkt-vor-Strich"-Regel nicht beachtet.
Ich bin für jede Anregung und (sachliche) Kritik offen.
Corpsman - Di 21.11.06 22:58
Hallo,
Ich habe in meinem Loop Compiler (
http://www.loopcompiler.de.vu ) auch einen Mathe Parser gebaut.
Dieser Rechnet zwar nur mit Zahlen Element N aber das prinzip ist das selbe.
Ich bin damals hergegangen und habe das Ganze in einen Baum geparst den habe ich dann nachher mittels rekursivem Abstieg berechnen lassen können.
Der Parser Ging folgendermasen vor.
Data = String der die Eingegebene Formel enthält.
Es Folgt ein wenig PseudoCode
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| If Pos(')',data)<> 0 then begin end;
If Pos('*',data) <> then begin end;
|
Das ganze Endet wenn am Schlus nur noch der daraus gebastelte Wurzelpointer im String steht.
ein Ausdruck wie etwa
1+2*3
wird dann zu
Quelltext
1: 2: 3: 4: 5: 6:
| // Du siehst hier das Baumdiagramm, muste es als Quelltext formatieren, da sonst die Leerzeichen gelöscht werden. + / \ 1 * / \ 2 3 |
Natürlich kann mein Parser X, y ,z auch. das ein zu bauen braucht aber dann LookUpTables.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!