![]() |
Gibt es eine Function die Funktionen mit Variablen rechnet?
Aloha leutz!
Ich wollte fragen ob es in Delphi eine Function gibt, der eine Funktion MIT Variablen (also z.B: 4x^3+3x^2+2x+1 o.ä.) ausrechnet. Hab die Delphi-Hilfe durchforstet bis zum abwinken, aber leider nichts passendes gefunden... vllt weil ich nicht die richtigen Stichwörter benutzt habe? Naja, jedenfalls habe ich nichts gefunden. Habe auch hier im Forum nachgeguckt ob es evtl schon einen passenden Eintrag gibt, aber leider auch keinen gefunden... Naja, trotzdem halt immer noch die Frage ob es so eine Funktion gibt (wobei ich das ehrlich gesagt bezweifle). Da ich diese Funktion aber relativ dringend brauche, hab ich versucht selber eine solche Funktion zu schreiben. Sie funktioniert auch, allerdings nur wenn Variablen vor jeder Strich-Rechnung vorkommen (d.h. 20+x z.B. wird falsch ausgerechnet.). Auch Klammern und Brüche kann sie noch nicht berücksichtigen... hat jemand einen idee wie ich z.B. eine zweite Funktion für die Klammern integrieren könnten und wie die auszusehen hat? hier meine bisherige Funktion:
Delphi-Quellcode:
die Formel wird über ein TEdit als String verwendet, X ebenfalls.
function TForm1.formel_extract_use(const formel:String; x:real):real;
var klammern,next_strich,x_potenz,x_multiplikator,i,e:integer; ergebnis,temp,temp2: real; without_x : boolean; klammer_formel: string; ohne_klammer: string; begin if not (formel[length(formel)] = '.') then formel := formel + '.'; x_potenz := 0; x_multiplikator := 0; ergebnis := 0; next_strich := 0; klammern := 0; for i := 1 to length(formel) do begin if (formel[i] = '+') or (formel[i] = '-') or (formel[i] = '.') then begin x_potenz := 0; if (formel[i-2] = '^') then begin x_potenz := StrToInt(formel[i-1 - klammern]); if not (i - 4 - klammern = next_strich) then begin x_multiplikator := 0; for e := next_strich + 1 to i - 4 - klammern do begin x_multiplikator := x_multiplikator * 10; x_multiplikator := x_multiplikator + (StrToInt(formel[e])); end; end; end else if (formel[i-1 - klammern] = 'x') then begin if not (i - 2 - klammern= next_strich) then begin x_multiplikator := 0; for e := next_strich + 1 - klammern to i - 2 - klammern do begin x_multiplikator := x_multiplikator * 10; x_multiplikator := x_multiplikator + (StrToInt(formel[e])); end; end; end else begin x_multiplikator := 0; without_x := true; temp := 0; for e := next_strich + 1 to i - 1 - klammern do begin temp := temp * 10; temp := temp + (StrToInt(formel[e])); end; end; if not without_x then temp := x; temp2 := 1; if not (x_potenz = 0) then for e := 1 to x_potenz - 1 do begin temp2 := temp2 + 1; temp := temp * x; end; if (x_multiplikator = 0) then x_multiplikator := 1; if (next_strich = 0) then ergebnis := x_multiplikator*temp else if (formel[next_strich] = '+') then ergebnis := ergebnis + x_multiplikator*temp else if (formel[next_strich] = '-') then ergebnis := ergebnis - x_multiplikator*temp; next_strich := i; end end; formel_extract_use := ergebnis; end; Dem Formel-String wird zuvor noch ein '.' hintendran gesetzt, damit die Funktion den letzten Teil der Formel auch noch auswertet. Wäre schön wenn mir jemand helfen könnte. MFG Yahibanez |
Re: Gibt es eine Function die Funktionen mit Variablen rechn
[dp]Mathe+Parser[/dp]
|
Re: Gibt es eine Function die Funktionen mit Variablen rechn
D'oh...
hatte wirklich die falschen Suchwörter 'damn'. Dankeschön :o) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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 by Thomas Breitkreuz