@NamenLozer: so schreibt aber kein Mensch und da Vorzeichen die höchste Priorität haben, ist praktisch auch keine Klammer nötig
Zitat von
athomas:
aber ich hab jetzt ein problem beim multiplizieren mit negativen zahlen:
Das Problem ist hierbei, daß du in dieser Reihenfolge auswertest
1. *
2. /
3. -
4. +
aber eigentlich ist die korrekte Reihenfolge so
1. Vorzeichen +-
2. Punktrechnung */
3. Strichrechnung +-
oder auch nacheinander
1a. Vorzeichen +
1b. Vorzeichen -
2a. Punktrechnung *
2b. Punktrechnung /
3a. Strichrechnung +
3b. Strichrechnung -
(a und b kann auch vertauscht werden)
schau mal dort
http://www.delphipraxis.net/internal...ghlight=parser
das Problem ist auch, daß du ungeprüft einfach alles miteinander verrechnest
also bei 1--2 wird 1 - "-" gerechnet
die Vorzeichenberechnungen müßtest du also noch vor die Berechnungen von * und / verlegen
und dann z.B. nur bei folgender Bedingung diese Berechnungen ausführen
((i = 0) or istKeineZahl(sl[i-1])) and (sl[i] = '-') and istZahl(sl[i+1])