So schönen Abend,
Ich habe mich die letzten Tage mal an ein KalkulationsSystem gewagt, mit dem es möglich ist, "komplexe" Rechenaufgaben, wie z.B. "1+(10-20)*-10*-1+200*((10+9)*-8 )*-1" zu berechnen.
Zu Anfang gab es noch Probleme mit der Klammernauflösung, dann mit den Minuszahlen. Aber jetzt funktionierten bisher alle meine Testrechenaufgaben.
Das System ist insgesamt nicht sauber gecodet und wird von mir mit Sicherheit in der nächsten Zeit neu geschrieben. Nur bisher erfüllt es seine Testzwecke gut und ich bin insgesamt zufrieden mit dieser Arbeit.
Es werden alle Rechenregeln befolgt, d.h. Klammern vor Punkt, Punkt vor Strich.
Zudem sind Klammern in der Klammer auch kein Problem. Sollte es noch weitere Fehler geben bitte ich euch, dass ihr sie mir in diesem Thread, oder per PM mitteilt
Die Anwendung:
Die Anwendung ist so simpel, wie bei einem handelsüblichem Taschenrechner. Ihr gebt der Methode "Calc" eine Rechnung an, und sie gibt das Ergebnis im Typ int zurück
#include Calculator
public OnFilterScriptInit(){
printf("ERGEBNIS: %d",Calc("1+(10-20)*-10*-1+200*((10+9)*-8)*-1")); // Ergibt 30301
return 1;
}
Geplant sind noch Funktionen, wie Hoch, Wurzel, Tangenz, Sinus & Kosinus. Allerdings werde ich mir dafür noch zeit lassen, bis das System effizienter und schöner neu geschrieben wurde
Download:
PasteBin