Deutsch
Forum

Mathe-Parser

 
- Seite 1 -



Jac
de
Lad
Hallo Community!

Bis jetzt bin ich euch eigentlich nur auf die Nerven gegangen, hab unendlich viele Fragen gestellt und meine Progs und Codeschnipsel im Hintergrund gehalten. Naja, das liegt daran, dass meine Programme wahrescheinlich keine große Verwendung für euch haben. Wie auch immer. Ich arbeite im Moment an einem Taschenrechner, der nicht nur einfach rechnen soll, sondern auch Funktionen (auch in 3D) darstellen soll, sowie Terme umformen und auf lösen, Umgehen mit komplexen Zahlen etc...jedenfalls habe ich angefangen einen Parser für mathematische Ausdrücke zu schreiben. Ich denke, den könnt ihr vielleicht auch gebrauchen...allerdings ist der noch nicht fertig. Er beherrscht im Moment folgendes:
- Die Grundrechenarten +-*/ sowie (Division mit Abschneiden der Machkommastellen) und Potenzen (mit ^)
- Klammern (egal ob (), [], {}, <> oder gemischt, alles wird erkannt)
- Leerzeichen werden ausgefiltert
- negative Zahlen müssen nicht in Klammern gefasst werden (bitte ausprobieren)
- fängt folgende Fehler ab: Division durch 0, unausgewogene Klammern, nicht vorhandener Term, unerlaubte Zeichen im Term (noch unvollständig), falsche Klammeranordnung
- Groß- und Kleinschreibung wird ignoriert (für spätere trigonometrische Funktionen und so, jetzt noch nicht von Belang)
aber das Wichtigste: er orientiert sich an Punktrchnung vor Strichrechnung und Potenzen vor Punktrechnung!

Alle die im Zeit haben: Bitte probiert das Teil mal aus. Das ganze habe ich in eine PCU gepackt und ist im Prinzip eine Klasse. Hier ein Demo-Code:
 $U Parser.pcu=Math.
 {$iq}
declare term$,m#
Dim m#,Math
term$="-2*-12-3*6"
m#.Term&=Addr(term$)
cls
Print "PCU-Version: "+m#.Version()
Print "Term: "+term$
Print "Ergebnis: "+m#.Parse()
Print "Fehlernummer: "+Str$(m#.Error%)
Print "Fehlerstring: "+m#.ErrCode()
Print "Iterationen: "+Str$(m#.iterations%)
Print "Benötigte Berechnungszeit: "+Str$(m#.Time&)+" Millisekunden"
Print "--- Taste ---"
Dispose m#
waitinput

Ich will im Moment noch nicht viel verraten, das folgt alles, wenn der Parser einwandfrei funktioniert. Zum Ausprobieren einfach die Formel ändern, der Demo-Code ist eigentlich auch nicht schwer zu verstehen. Mir gehts, wie gesagt, im Moment nur darum Fehler aufzudecken. Ich hab bis jetzt keine gefunden, aber ich rechne mit ner Lawine Zuschriften. Naja, wenn das dann irgendwann richt funzt kann ich die Trigonometrie einbauen und Stochastik und so, dann werde ich auch eine vollständige Beschreibung liefern. Also wie gesagt: BITTE FEEDBACK, gerade wegen negativer Zahlen!

Jac

@Michael Wodrich: Vielen Dank für deine Hilfe! Ich hab leider die alte Version völlig verhunzt und hab deswegen nochmal von vorne angefangen. Aber einiges konnte ich wiederverwenden, vor allem wäre ich ohne deine Hilfe nicht so schnell vorangekommen!!!

Nachtrag:
Auf neue Version aktualisiert: 0.1.0.4 (Verbesserung der Erkennung negativer Zahlen, müsste jetzt perfekt sein, der Term kann jetzt auch Parameter der Prozedur Parse angegeben werden [hat Vorrang vor der Angabe mit .term&!]).

5 kB
Kurzbeschreibung: Matherparser 0.1.0.4 (09.02.2006)
Hochgeladen:09.02.2006
Ladeanzahl312
Herunterladen
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
09.02.2006  
 



 
- Seite 3 -



Peter
Mallow
Habe einen Fehler gefunden, als ich die Scheitelpunktsform testen wollte:
x*(x-1)^2

Beispiel:
term$ = (-1-1)^2
term$ = (-5-1)^2
 
WinXP Pro SP2, XProfan 9 + XPSE
AMD Athlon 64 X2 3800
18.02.2006  
 




Jac
de
Lad
Hallo Peter!

Ich habs korrigiert (hoffe ich jedenfalls!), danke für den Hinweis! Probiers mal aus. Demnächst werde ich noch imaginäre Zahlen einbauen, da wird das Ganze dann noch etwas komplizierter!

Jac

47 kB
Kurzbeschreibung: Matheparser 0.3.11b.28 (18.02.2006)
Hochgeladen:18.02.2006
Ladeanzahl70
Herunterladen
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
18.02.2006  
 




Peter
Mallow
Super funktioniert!

Aber nun gleich der nächste Fehler:
1/2(5-1)^2 funktioniert nicht
1/2*(5-1)^2 funktioniert auch nciht
(1/2)*(5-1)^2 so klappts aber
(1/2)(5-1)^2 aber ohne * gehts trotzdem nicht

Hätte da noch eine Idee:
Man könnte doch zusätzlich noch eine Lite-Version machen, die nur die grundsachen beherrscht., aber dadurch deutlich schneller ist. Also +-*/, PI,sin,cos,tan,^ und noch das Wurzelziehen.

EDIT
habe noch einen Fehler gefunden:
-2*(2-2)^2+10
sind bei mir =10
aber
-2*(2-2)^2+10 =0
-2*(2-2)^2+10+5+2+6 auch null
2*(2-2)^2+10 so stimmt das ergebnis wieder
 
WinXP Pro SP2, XProfan 9 + XPSE
AMD Athlon 64 X2 3800
19.02.2006  
 




Jac
de
Lad
Hallo Peter,
oje die Potenzen...ich schau nochmal nach, das dürfte behebbar sein. Spätestens heute abend ist die neue Version da!

Über eine Lite-Version habe ich noch nicht nachgedacht, da die Unit ja Freeware ist und bleiben wird. Du meinst aber sicher wegen der Geschwindigkeit, oder? Mal sehen, wennse stabil ist...vielleicht!

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
19.02.2006  
 




Jac
de
Lad
Hallo Peter!

Ich habe alle Fehler die du beschrieben hast behoben. Das eine war ein Links-nach-Rechts-Ausführen-Fehler (gleichwertige Operatoren nicht nacheinander sondern von links nach rechts ausführen!), wie auch immer, jetzt gehts. Leider ist er dadurch aber auch langsamer geworden...für deine Zwecke wird er wohl kaum herhalten können...

@all: Ich habe schnell einen billigen zusammengeschusterten Taschenrechner mit beigelegt.

Jac

50 kB
Kurzbeschreibung: Matheparser 0.3.11c.29(19.02.2006)
Hochgeladen:19.02.2006
Ladeanzahl67
Herunterladen
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
19.02.2006  
 




Peter
Mallow
Super danke!
Jetzt geht alles, nur bei zu großen Verschachtlungen z.B. (5^4+(3/12)^2)^5+3 wird das Programm zum absturtz gebracht.

Ja mit einer Liteversion meinte ich eine abgespeckte version, die Geschwindigkeit gewinnt, indem viele sachen weckgelassen werden.
 
WinXP Pro SP2, XProfan 9 + XPSE
AMD Athlon 64 X2 3800
19.02.2006  
 




Jac
de
Lad
Hallo Peter,

das ist mir jetzt ehrlich unbegreiflich, denn bei mir kommt immer das richtige Ergebnis (95415124894145.2031). Egal ob compiliert oder im Interpreter oder so. Hast du vielleicht eine Vorstellung woran das bei dir liegen könnte???

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
19.02.2006  
 




Jac
de
Lad
Wird es gewünscht, dass Parcival bei einer Funktion, die eine ntürliche Zahl vorraussetzt (z.B. die stochatischen Funktionen) eine Fehlermeldung ausgegeben wird, wenn die Zahl Nachkommastellen hat? Ich will das jedenfalls so einbauen (alternativ, und daran werde ich jetzt ebenfalls evtl. arbeiten, könnte man auch bei bestimmten Fehlern, Meldungen unterdrücken und einfach weiterrechnen, bzw. wie in der Frage oben, einfach die Nachkommastellen abschneiden; quasi ein Set(ErrorLevel für Parcival).

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
19.02.2006  
 




Jac
de
Lad
So, ich hab jetzt so ne Art ErrorHandling eingebaut. Schaut dazu mal in der Hilfe nach, bzw. im beigelegten Quelltext.

Jac

53 kB
Kurzbeschreibung: Matheparser 0.3.12.30 (19.02.2006)
Hochgeladen:19.02.2006
Ladeanzahl169
Herunterladen
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
19.02.2006  
 



Die Unit ist fehlerhaft und lässt sich mit XProfan9 nicht kompilieren. Es erscheint die Meldung Befehl nicht gefunden: PARAMTERS BIT&

Parameters ist falsch geschrieben.

Auch meldet XPSE bei den Beispielen Fehler.
 
19.02.2006  
 




Jac
de
Lad
Oje, ich hatte gehofft, dass nun endlich alle Fehler behoben seien, dabei habe ich einen neuen eingebaut.

@iF: Was für Fehler meinst du in meinen Beispielen? Bei mir ningelt XPSE zwar rum, aber es lässt sich einwandfrei compilieren und ausführen!

Jac

53 kB
Kurzbeschreibung: Matheparser 0.3.12a.31 (20.02.2006)
Hochgeladen:20.02.2006
Ladeanzahl144
Herunterladen
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
20.02.2006  
 




Jac
de
Lad
Hallo Community!

Hier die erste 0.4-er-Version. Ich habe was feines, neues eingebaut. Probierts mal aus. Die neue Funktion ist aber noch nicht fertig, sonder befindet sich noch in der Testphase. Ich bin natürlich weiterhin für alles (vor allem Fehler) offen!

Jac

56 kB
Kurzbeschreibung: Matheparser 0.4.0.32 (21.02.2006)
Hochgeladen:21.02.2006
Ladeanzahl131
Herunterladen
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
21.02.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

23.254 Betrachtungen

Unbenanntvor 0 min.
Sven Bader31.08.2023
iF06.12.2020
RudiB.15.04.2020
kustg02.03.2020
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie