Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi String in Formel umwandeln (https://www.delphipraxis.net/160795-string-formel-umwandeln.html)

loirad 1. Jun 2011 06:40

String in Formel umwandeln
 
Liebe Delphi PRAXIS'ler,

kann man irgendwie einen String in eine Berechnungsformel umformen? Ich brauche es für ein Parabelprogramm. Hier ein Beispiel: 'y:=x²+2'! Geht das? Tipps wären sehr hilfreich :thumb:!!!

Liebe Grüße
loirad

mkinzler 1. Jun 2011 06:50

AW: String in Formel umwandeln
 
Such mal nach MatheParser

hboy 1. Jun 2011 08:41

AW: String in Formel umwandeln
 
je nachdem, wie tief du einsteigen willst, lohnt auch ein Blick in diesen Thread:
http://www.delphipraxis.net/141881-j...s-formeln.html

Michelle 1. Jun 2011 15:54

AW: String in Formel umwandeln
 
Hallihallo!

Wenn du genau die Form kennst, in der die Formel angegeben ist, kannst du es machen. Wenn also zum Beispiel weißt, dass der Benutzer die Formel IMMER in der Form: 'y:=x^N+B'angibt, funktioniert es:

Code:
var S : String; N,i: Integer; B: Real;
begin
  S := Edit1.text;
  N := StrToInt(S[6]);        //der 6. Buchstabe im String
  B := '';
  for i := 7 to Count(S) do   // damit B < 9 möglich ist: der 7. bis letze Buchstabe
    B := B + StrToReal(S[i]);
end;
Der Nachteil: sobald der Benutzer auch nur ein Leerzeichen zu viel setzt, funktioniert das alles schon nicht mehr.
Alternative: Mach verschiedene Edit-Felder, in denen du die einzelnen Werte reinschreiben lassen kannst.

Liebe Grüße!

nuclearping 1. Jun 2011 15:57

AW: String in Formel umwandeln
 
Zitat:

Zitat von Michelle (Beitrag 1104149)
Der Nachteil: sobald der Benutzer auch nur ein Leerzeichen zu viel setzt, funktioniert das alles schon nicht mehr.

Man kann zB in dem String vorher aber auch alle Leerzeichen entfernen.

Memnarch 1. Jun 2011 16:02

AW: String in Formel umwandeln
 
Oder man sucht im string nach den zeichen. Bei einer festen formel ist ja alles in beton gemeißelt was die operatoren angeht.

loirad 1. Jun 2011 16:03

AW: String in Formel umwandeln
 
Naja es sollen auch z.B. Wurzelfunktionen angezeigt weden. Mit Edits habe ich es jetzt, aber ich will ja auch Wurzelfunktionen anzeigen.
@all: Danke für eure Hilfe :thumb:

himitsu 1. Jun 2011 16:04

AW: String in Formel umwandeln
 
Zitat:

Zitat von Michelle (Beitrag 1104149)
Der Nachteil: sobald der Benutzer auch nur ein Leerzeichen zu viel setzt, funktioniert das alles schon nicht mehr.
Alternative: Mach verschiedene Edit-Felder, in denen du die einzelnen Werte reinschreiben lassen kannst.

In soeinem Fall legt man mehrere Edits auf die Form (pro Variable Eines) und dazwischen mit ein paar Labels für den Rest der Formel, bzw. dahinter ein Image.

PS: FormelParser gibt es mehrere in der DP zu finden.

Michelle 1. Jun 2011 16:50

AW: String in Formel umwandeln
 
Wenn du eine Wurzelfunktion berechnen lassen willst, dann musst du in das Edit-Feld für die Potenz 1/n schreiben, denn: sqrt(x) = x^(1/2) bzw. die n-te Wurzel von x = x^(1/n).
Wenn du das nicht möchtest, kannst du auch mithilfe von RadioButtons oder einer Combobox auswählen lassen, ob das eine Wurzelfunktion ist oder eine Potenzfunktion.
Du musst aber sowieso abfragen, die wievielte Potenz berechnet werden soll, da die Anzahl der Parameter ja davon abhängt. Lass doch einfach in ein Editfeld oder mithilfe einer Combobox die Potenz bzw. Wurzel anzeigen. Daraufhin lässt du dann die entsprechende Anzahl Editfelder (1 Editfeld pro Parameter) sichtbar machen und hinterher auswerten.


Das mit den Editfeldern habe ich mir so vorgestellt:
(Label, Editfeld)
Zurerst: n
Daraufhin stellst du Visible: f(x)= a * x^n + b * x^(n-1) + ... + z *x^(n-n)

Zum Beispiel: 3
f(x)= a * x^3 + b * x^2 + c * x + d

himitsu 1. Jun 2011 19:18

AW: String in Formel umwandeln
 
http://www.delphipraxis.net/135569-m...athelib-_.html
http://www.delphipraxis.net/153816-t...i-rechner.html
http://www.delphipraxis.net/142004-u...-%5Bos%5D.html
und wie schon erwähnt Delphi-Referenz durchsuchenMathe-Parser


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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