the Hellboard (http://old.the-hellboard.de/index.php)
- Diskussionen (http://old.the-hellboard.de/board.php?boardid=19)
-- Naturwissenschaften (http://old.the-hellboard.de/board.php?boardid=20)
--- mathematische funktionen und operatoren (http://old.the-hellboard.de/thread.php?threadid=4299)


Geschrieben von Cypher am 18.06.2005 um 21:36:

  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)



Geschrieben von Pirroh am 18.06.2005 um 23:27:

 

Du könntest auch noch xor, xnor, nand und nor mit reinnehmen. Würde vllt auch mal gebrauch. Übrigens gute idee, würde den parser sehr gerne einmal ausprobieren, wenn er öffentlichkeits fähig ist.



Geschrieben von Cypher am 19.06.2005 um 01:38:

 

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



Geschrieben von Bill Bones am 19.06.2005 um 12:59:

 

kenne sonst noch <> (ungleich), sq(x) (quadrieren)



Geschrieben von Cypher am 19.06.2005 um 15:11:

 

hab ich gerade implementiert smile

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?



Geschrieben von Goliat Skipson am 19.06.2005 um 15:17:

 

kannst noch die ganzen funktionen aus der wahrscheinlichkeits rechnung implementieren

und bitshifting Augenzwinkern



Geschrieben von Cypher am 19.06.2005 um 16:02:

 

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 :thinksmile 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:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
#include <iostream>
#include "arithexpr.hpp"

using namespace std;

int main(int argc, char *argv[])
{
    arithExpr *ae;
    ae = new arithExpr("3+2^4*(5+8*ln(3)/2)!=2");
    cout << ae->calculate() << endl;
    return 0;
}

müsste gehen rolleyes


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH