AGB  ·  Datenschutz  ·  Impressum  







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

Klammern aus einen String entfernen

Ein Thema von tavoc · begonnen am 24. Jan 2005 · letzter Beitrag vom 24. Jan 2005
Antwort Antwort
tavoc

Registriert seit: 4. Dez 2004
Ort: Brandenburg
19 Beiträge
 
#1

Klammern aus einen String entfernen

  Alt 24. Jan 2005, 16:14
Hallo,

ich schreibe grade ein Programm welches u.a. eine Funktionsanalyse macht ( also ableiten, Nullstellen usw.).
Jedoch habe ich da ein problem.

Der mathematische Ausdruck wird über ein Memo also string eingelesen und dann in die einzelnen Bestandteile aufgesplittet.

Könnt ihr mir einen Denkanstoß geben wie ich eine Funktion realisiere die mir alle Klammern in diesem string ausklammert.
Also z.b y=(3x+7)*2-(23x^12-3*8 )/5, das dann rauskommt y=6x+14-23/5x^12-24/5 .

Ich finde einfach keinen Ansatz wie ich dieses Problem lösen kann.


Thx
  Mit Zitat antworten Zitat
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Klammern aus einen String entfernen

  Alt 24. Jan 2005, 16:28
Hi,
Was meinst du mit "die einzelnen Bestandteile aufgesplittet" ?
Zerteilst du den Ausdruck nur in seine chars oder wird gleich was da und dort abgelegt und evtl. berechnet?
Um nämlich auszumultiplizieren musst du z.B Punkt-vor-Strich Rechnung beachtn usw.
Hast du das schon realisiert?
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Klammern aus einen String entfernen

  Alt 24. Jan 2005, 16:35
Zitat von tavoc:
ich schreibe grade ein Programm welches u.a. eine Funktionsanalyse macht ( also ableiten, Nullstellen usw.).
Der mathematische Ausdruck wird über ein Memo also string eingelesen und dann in die einzelnen Bestandteile aufgesplittet.

Könnt ihr mir einen Denkanstoß geben wie ich eine Funktion realisiere die mir alle Klammern in diesem string ausklammert.
Also z.b y=(3x+7)*2-(23x^12-3*8 )/5, das dann rauskommt y=6x+14-23/5x^12-24/5
Einfach nur alle Klammern entfernen würde ja den orginalen Ausdruck verfälschen!!
Du brauchst einen "Symbolic Evaluator".
Du möchtest dieses Ding anscheinend selbst programmieren; das ist aber nicht so einfach!

http://www.efg2.com/Lab/Library/Delp...ns/Parsers.htm
http://homepages.borland.com/torry/expressions.htm
Suchwörter: Bei Google suchensymbolic ANd evaluator AND delphi
Andreas
  Mit Zitat antworten Zitat
tavoc

Registriert seit: 4. Dez 2004
Ort: Brandenburg
19 Beiträge
 
#4

Re: Klammern aus einen String entfernen

  Alt 24. Jan 2005, 16:39
Also bisher macht der das so:

wenn ich zb. das hier eingebe: y=3x^6+2x+3 dann wird das in 2 Felder aufgeteilt.
Eins für die Faktoren und eins für die Exponenten.


Also z.b

faktor[1]=3
exponent[1]=6
faktor[2]=+2
...

Zurzeit habe ich noch keine richtige Punkt vor Strich rechnung drin, aber ich weiß wie ich das mache, zurzeit funktioniert mein programm nur bis x^3 (deshalb möchte ich es erweitern) und da habe ich noch keine Punkt vor Strich Rechnung benötigt.

Berechnet wird dann in einer anderen Funktion die die beiden Felder überreicht bekommt.
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Klammern aus einen String entfernen

  Alt 24. Jan 2005, 16:40
Angenommen, du hast den Term
Code:
c=3*(6+7)
Zuerst solltest du dir sowas wie nen Stack anlegen, geht damit wunderbar
Dann legst du dir die 3 auf den Stack und suchst nach einem Operator (in dem Fall das *)
Danach musst du halt nach der "Klammer auf" suchen und nach der "Klammer zu"
Alles dazwischen ist dann zuerst auszurechnen.
Wenn du dann die 13 ausgerechnet hast, multiplizierst du sien mit dem Wert, der auf dem Stack liegt, also der 3.
Die Sachen mit mehreren Schachtel-Klammern folgen halt (wie heißt es so schön ) analog.

Also alles gar nicht mal soo schwierig
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

Re: Klammern aus einen String entfernen

  Alt 24. Jan 2005, 16:58
Um damit einen sinnvolleren Titel zu provozieren,
folgender Quellcode zur Lösung des Problems:
Delphi-Quellcode:
AnsiReplaceStr (Text, '(', '');
AnsiReplaceStr (Text, ')', '');


P.S. Herzlich Willkommen in der DP !
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Klammern aus einen String entfernen

  Alt 24. Jan 2005, 17:31
Zitat von jfheins:
Um damit einen sinnvolleren Titel zu provozieren,
folgender Quellcode zur Lösung des Problems:
Delphi-Quellcode:
AnsiReplaceStr (Text, '(', '');
AnsiReplaceStr (Text, ')', '');
nicht ganz richtig denn es handelt sich um eine funktion deren rückgabewert natürlich auch zugewiesen werden sollte
Delphi-Quellcode:
Text := AnsiReplaceStr (Text, '(', '');
Text := AnsiReplaceStr (Text, ')', '');
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: Klammern aus einen String entfernen

  Alt 24. Jan 2005, 19:33
Oh Gottt, nicht mal das krieg' ich hin. Ich sollte heute früher ins Bett gehen ...
  Mit Zitat antworten Zitat
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Klammern aus einen String entfernen

  Alt 24. Jan 2005, 20:38
Als Beispiel, wenn du's mit Stacks machn willst, hab ich in der Open Source Sparte einen TR gepostet der mit Stacks arbeitet und so Punkt-Vor-Strich-Rechnung kann. Den um Klammern zu erweitern dürfte kein unlösbares Problem darstellen.
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat
tavoc

Registriert seit: 4. Dez 2004
Ort: Brandenburg
19 Beiträge
 
#10

Re: Klammern aus einen String entfernen

  Alt 24. Jan 2005, 21:03
Danke,

ich werde mir das mal morgen angucken.
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz