hm,
ich hab mal ne frage:
ich möchte ein programm schreiben das mir jede funktion zeichnen kann, also y=[beliebige funktion]. leider kann man ja sowas nur im quelltext sehr einfach machen...
wie bringe ich dem PC also die regeln für wurzeln ziehen und potenzen, klammern und"punkt vor strichrechnung" bei?
ich hab mir folgendes überlegt:man schreibt alles in einen string,dann geht man alles durch und speichert es in arrays. aber wie kann man ihm nun sagen das er alles was z.B. in klammern steht zuerst ausrechnen soll? ab da komm ich net mehr weiter....gibs da vllt. ne leichtere lösung sowas zu programmieren?
TP: wie kann ichg jede beliebige funktion zeichnen lassen?
-
-
Vlt wäre es hilfreich wenn du uns die Sprache nennst mit der du es realisieren willst.
Für solche mathematischen Sachen wäre ne funktionale wie Haskell praktisch.
-
TP = Turbo Pascal??
Naja Stichwort Formelparser
Falls es TP ist such mal im Forum von https://www.voodooalert.de/www.delphipraxis.net nach Formelparser ich glaub da hat mal einer einen geschrieben, oder poste da die Frage nochmals -
Aso, des mit TP hab ich verplant. :tongue:
Da kann ich leider nicht helfen.
-
hmmm...dann denk ich mir schnell einen ryam bacoschen algorithmus aus...
die gute alte klammerregelung soll also von strings zu einem korrekten ergebnis führen...hmmmm...
ich würd mal eine klasse mit dem namen term (oder grüne elefanten oder sonstiges, was dir so gefällt) mit einem string für die termoperation und die "wichtigkeit" als integer oder so (die höchste wird zuerst errechnet, usw...)
dann die einzelnen zeichen per schleife durchdingsen und in ein array aus dieser klasse schreiben...ähm...moment...mir offenbart sich gerade, dass meine gedanken ohne beispiel niemand versteht...also nochmal
beispiel + ryam bacoscher algorithmus
wir haben den string rechnung mit "3*(2+6*(2+3))"
und die klasse term mit
operation: string und
wichtigkeit: intnun die einzelnen zeichen von rechnung per array durchlaufen
irgendwie so:
string hierro="";
int i=0;
int ebene=0; //die rechenebene = wichtigkeit
for char c in rechnungarray blabla
{
if(c!='(')||(c!=')') //jetzt kommt keine klammernscheiße
{
hierro+=c; //hierro wird also der "rechentext" innerhalb eines klammerndings
}
else
{
if (c=='(')
ebene++; //diese rechnung ist "wichtiger" - wird zuerst errechnet
else
ebene--; //klammer zu --> "unwichtigere" rechnung
rechnungarray[i].operation=hierro;
rechnungarray[i].wichtigkeit=ebene;
hierro="";
i++;
}
...so würde ich das zumindest ausprogrammieren. jetzt bräuchtest du nur noch eine funktion, die dir aus diesen stringoperationen ein ergebnis bastelt. aber dafür bin ich jetzt zu faul.
edit: wooohooo. turbo pascal. das ist ja nichtmal richtig objektorientiert. du musst wohl meine idee etwas "modifizieren"...
-
da hatter schon genuch zeit zu
und wens interessiert: mein tp Wahlergebnisprog is auch fertig