AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programmmieren eines Mathe-Parsers

Ein Thema von Sebastian92 · begonnen am 18. Jun 2008 · letzter Beitrag vom 18. Jun 2008
 
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#3

Re: Programmmieren eines Mathe-Parsers

  Alt 18. Jun 2008, 16:04
Ich weiß nicht, wie professionell ein Parser sein muss, damit er PARSER genannt werden kann. Aber wenn es dir darum geht, dass du eine Aufgabe in Form eines Strings z.B.
Code:
5+9*3-1+(7*2)
ausrechnest, kann ich dir empfehlen mit Stringmethoden den String so zu zerlegen, dass du Zahlen rausarbeitest und schaust, welches Rechenzeichen zwischen ihnen steht.
Also als erstes die Vorrangoperatoren und dann schreibst du sie zurück in den String. Bei dem Beispiel sollte das Programm dann erstmal nach Klammern suchen und diese lösen und in den Klammern (je nachdem wieviel drin steht) fängst du dann (wie im restlichen Teil der Aufgabe, wenn die Klammern weg sind) an, nach * und / zu suchen und die umliegenden Zahlen zu isolieren bzw. so zu konvertieren (in Integer oder Double z.B.), dass du intern mit ihnen rechnen kannst. Dann löst du die Aufgabe über eine Abfrage was für ein Operator zwischen ihnen steht. Bspw. 7*2 >> if Op = '*' then 7*2 else 7/2; (da du Vorrangrechnung zuerst machst, brauchst du in diesem Fall nur * oder / überprüfen, später + und - . Die Zahlen musst du eben vorher schon mittels StrToInt/Float und Copy aus dem String kopieren. Und so machst dus nachher mit + und - und außerhalb der Klammern auch.

Später lässt sich das ja dann auch noch auf Wurzel, Quadrat usw. erweitern. Nur immer den Vorrang beachten.

Man könnte auch ein Array nehmen, welches die Zahlen speichert (also alle Zahlen raussuchen) und dann eins, welches angibt, wie mit zwei benachbarten zahlen zu rechnen ist. Da wird es aber schwierig, wenn man Klammern in der Aufgabe hat, denn dann muss man diese Arrays verschachteln...
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz