Grazie per l'interessamento.
Ho guardato attentamente i due link che mi hai proposto. Nel primo è presente la semplice RPN che non mi da problemi, mentre risulta interessante l'articolo del secondo che mi fa trarre la conclusione che la cosa non sia possibile su numeri reali e tantomeno sui numeri complessi. Quì si esprime un algoritmo differente l'W3Eval che lavora sul parsing e simula un normale svolgimento dell'espressione come facciamo con carta e penna.
E' anche vero che la mia era una ricerca di fattibilità apportando modifiche ad semplice algoritmo già utilizzato. L'idea di apporre zero sottraendo semplificava il cambio di segno su piccole espressioni, ma nella conversione infix -> postfix di alcune più complesse a livello parentesi intendo avrei dovuto probabilmente rielaborare i dati facendo attenzione di non trovarmi nella situazione iniziale.
Comunque butto tutto nel cesso e tiro la catenella.
Grazie ancora,
Max
EDIT:
Esempio sempice:
in:-((1-2) + (2-3))
out="1 -2 + 2 -3 + + - " ---> 1 + -2=-1
out="-1 2 -3 + + - " ---> 2 + -3=-1
out="-1 -1 + - " ---> -1 + -1=-2
out="-2 - " ---> 0 - -2=2
result: 2
Altro esempio funzionante:
in:-{-2-[9-3-(14-7)+(-1-3)]-20}=17
out="-2 9 -3 14 -7 + - -1 -3 + + + - -20 + - 17 = " ---> 14 + -7=7
out="-2 9 -3 7 - -1 -3 + + + - -20 + - 17 = " ---> -3 - 7=-10
out="-2 9 -10 -1 -3 + + + - -20 + - 17 = " ---> -1 + -3=-4
out="-2 9 -10 -4 + + - -20 + - 17 = " ---> -10 + -4=-14
out="-2 9 -14 + - -20 + - 17 = " ---> 9 + -14=-5
out="-2 -5 - -20 + - 17 = " ---> -2 - -5=3
out="3 -20 + - 17 = " ---> 3 + -20=-17
out="-17 - 17 = " ---> 0 - -17=17
out="17 17 = " ---> 17 EQUAL 17
result: 0
ma sbagliato come logica
Ancora uno con aggiunta di zero:
in:13-{-2-[4-(3-5)]+1}-22=-2
out="13 0 -2 0 4 0 3 -5 + - + - 1 + + - -22 + + -2 = " ---> 3 + -5=-2
out="13 0 -2 0 4 0 -2 - + - 1 + + - -22 + + -2 = " ---> cambio segno a -2 ---> 2
out="13 0 -2 0 4 2 + - 1 + + - -22 + + -2 = " ---> 4 + 2=6
out="13 0 -2 0 6 - 1 + + - -22 + + -2 = " ---> cambio segno a 6 ---> -6
out="13 0 -2 -6 1 + + - -22 + + -2 = " ---> -6 + 1=-5
out="13 0 -2 -5 + - -22 + + -2 = " ---> -2 + -5=-7
out="13 0 -7 - -22 + + -2 = " ---> cambio segno a -7 ---> 7
out="13 7 -22 + + -2 = " ---> 7 + -22=-15
out="13 -15 + -2 = " ---> 13 + -15=-2
out="-2 -2 = " ---> -2 EQUAL -2
result: -2