TP: wie kann ichg jede beliebige funktion zeichnen lassen?

  • 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?

  • 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.

    THIS! IS!! SIGNATURE!!!

  • 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 ;)

    [Blockierte Grafik: http://download.chaos-raid.de/xhtml.gif]
    AMD Athlon64 3200+ :: MSI K8N Neo2 :: AOpen Aeolus 6800U :: G-e-i-l 1024MB RAM (DDR400, CL 2.5) :: Maxtor 120GB :: Hitachi 160GB :: NEC3520 DVD-RW :: AOpen 52x CD-R :: Creative Audigy :: Razer Diamondback

    [ Alan Wake ]

  • hmmm...dann denk ich mir schnell einen ryam bacoschen algorithmus aus... :spitze:

    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: int

    nun 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. :D

    edit: wooohooo. turbo pascal. das ist ja nichtmal richtig objektorientiert. du musst wohl meine idee etwas "modifizieren"... :topmodel: