mathematische funktionen und operatoren

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • mathematische funktionen und operatoren

      ich will einen parser für mathematische ausdrücke schreiben, und brauch sammle gerade operatoren und funktionen.

      bis jetzt sind mir
      +, -, *, /, %, sin, cos, tan, ^ ("hoch"), sqrt(x), =, >, <, <=, >=, !=, & ("und"), | ("oder")
      eingefallen.

      aber da gibts sicher noch mehr. und ob die von anderen funktionen ableitbar sind müsste ich auch wissen (so wie sqrt(x)=x^0.5)

      Website | Blog

      Meine Organe sind offenbar nicht am richtigen Platz. - Nicht am richtigen Platz? Entsprechend welchen Kriterien? aus dem FIlm "Immortal"

      <Goliat> Cypher ruled ;)
    • hab mal einen für logische ausdrücke geschrieben, also nur mit and, or und not und klammern.
      cypher.cybton.com/tgi2007/uplo…k/truthtable-0.1.2.tar.gz
      musst du aber erst noch kompilieren, wenn du ihn ausprobieren willst ;)
      da is ein Makefile dabei.
      und dann kannst du dir von ausdrücken wie "a&b|(!c&b)" tabellen erstellen lassen.

      Website | Blog

      Meine Organe sind offenbar nicht am richtigen Platz. - Nicht am richtigen Platz? Entsprechend welchen Kriterien? aus dem FIlm "Immortal"

      <Goliat> Cypher ruled ;)
    • hab ich gerade implementiert :)

      aber mir stellt sich gerade eine neue Frage: gibt es irgendwelche mathematischen funktionen (wie cos, ln, etc.) die mehr als ein Parameter brauchen und nicht durch andere dargestellt werden können die nur einen brauchen?

      Website | Blog

      Meine Organe sind offenbar nicht am richtigen Platz. - Nicht am richtigen Platz? Entsprechend welchen Kriterien? aus dem FIlm "Immortal"

      <Goliat> Cypher ruled ;)
    • was für funktionen sind das denn so?
      aber wenns da noch von c noch keine funktionen gibt siehts eher schlecht aus, weil ich will erst mal den parser an sich schreiben. irgendwelche mathemtatischen algorithmen zu implementieren gehöhrt da erst mal net dazu.
      und bis jetzt kann er noch nicht mal variablen ersetzen.
      nur so sachen wie "2+3^3*10.2>5" auswerten, oder ausrechnen.

      bitshifting müsste ich hinbekommen, probier ich gleich aus.
      edit: ich seh gerade, dass wenn man die normalen bitshift operatoren nehmen würde ("<<", ">>"), würde das ein problem mit den vergleichsoperatoren ">" und "<" geben...
      aber mal schauen.


      edit:
      hab eine benutzbare version der ersten klasse fertig.
      sie kann nichts mit variablen anfangen und man kann nichts mit neuen eigenen funktionen (ich glaube sowas nennt sich komposition :think:) anfangen. falls sie jemand ausprobieren will...
      folgende operatoren und funkionen werrden unterstützt:
      +, -, *, /, ^ (hoch), =, <=, >=, != (ungleich), sin, cos, tan, asin (umkehrfunktion von sin), acos, atan, ln
      die benutzung der klasse is ziemlich simpel.
      einfachdie Datei "arithexpr.hpp" inkludieren und dem linker sagen er soll mit der libmath linken (-lm beim gcc). klasse initialisieren und calculate() aufrufen.
      bsp:

      C-Quellcode

      1. #include <iostream>
      2. #include "arithexpr.hpp"
      3. using namespace std;
      4. int main(int argc, char *argv[])
      5. {
      6. arithExpr *ae;
      7. ae = new arithExpr("3+2^4*(5+8*ln(3)/2)!=2");
      8. cout << ae->calculate() << endl;
      9. return 0;
      10. }
      Alles anzeigen

      müsste gehen :rolleyes:
      Dateien
      • arithExpr.rar

        (3,37 kB, 1.001 mal heruntergeladen, zuletzt: )

      Website | Blog

      Meine Organe sind offenbar nicht am richtigen Platz. - Nicht am richtigen Platz? Entsprechend welchen Kriterien? aus dem FIlm "Immortal"

      <Goliat> Cypher ruled ;)

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Cypher ()