Newsgroup: it.comp.lang.visual-basic
Titolo: calcolatrice - help me please

Ragazzi ho appena completato il progetto di una calcolatrice, tipo
windows, ma un po piu decente amio avviso solo che ad un certo punto
sono andato in panne perche non riesco a trovare un algoritmo che mi
faccia fare la somma algebrica dei numeri.
voi direte ma mo questo che vo'
questo: es. 4+2*3+7 = 17 e non 25
spero di essere stato chiaro e che qualcuno possa darmi una mano
inoltre volevo chiedervi:
è possibe cambiare il colore del testo di un button? vedi tasti rossi
e blu della calcolatrice di windows. se si come 
grazie ORPO

 questo: es. 4+2*3+7 = 17 e non 25
Ti fai il tuo bell'analizzatore lessicale che controlla, appunto, se ci sono solo parole
che abbiano un senso, e poi ti costruisci il tuo bell'analizzatore sintattico che,
appunto, controlla che le frasi siano costruite bene (soggetto -> verbo -> complemento
oggetto).
Che c'entra? dirai te... C'entra, c'entra... quello a cui hai pensato non e' altro che
un linguaggio: il linguaggio delle espressioni algebriche (di un loro sottoinsieme molto
limitato). E come tutti i linguaggi che si rispettino per essere intesi devono essere
analizzati.
Di letteratura in merito ne trova a bizzeffe. Basta che cerchi un po' su internet tutto
cio' che riguarda "analizzatore lessicale/sintattico" nell'ambito dei "compilatori"...
Se non sbaglio sul sito comune dovresti trovare cmq qualcosa di già pronto.

Per fare una calcolatrice servono due Code, la coda degli operatori e degli
operandi, e con vari push e pop ci puoi fare di tutto, anche espressioni con
più livelli di parentesi, naturalmente ti devi studiare le code :)

 questo: es. 4+2*3+7 = 17 e non 25
Non puoi usare le parentesi?
4 + (2*3)+7
oppure inverti:
2*3+4+7
Ciao,
Carlo.

 più livelli di parentesi, naturalmente ti devi studiare le code :)
Gestire le parentesi serve per operazioni del tipo:
    2 * ( 2 + 2 )
in quanto si vuole dare una priorità alla somma che non ha rispetto alla
moltiplicazione.
Come gestisci le seguenti operazioni con le code?
    2 * ( 2 + 2)
    ( 2 + 2) * 2
E queste?
    2 + 2 * 2
    2 * 2 + 2
Forse volevi scrivere "pile" e non "code"... :))))
Quello che voglio dire e' che probabilmente ti analizzi l'espressione carattere per
carattere (analisi lessicale) e che poi in base a certe regole semantiche esegui le
operazioni avendo riconosciuto dei costrutti sintatticamente corretti (analisi
sintattica).
Benche' l'argomento vada ben oltre lo scopo del quesito, se siete interessati cercate
"compilatori" e le sue varie fasi (a partire dall'analisi lessicale passando per quella
sintattica arrivando a quella semantica, ecc...).

sarebbe il caso anche di decidere la notazione da utilizzare...
non è facile fare una calcolatrice...
-> GbC
http://www.gbcweb.com

 non è facile fare una calcolatrice...
Be' quella inversa polacca e' la migliore per poter poi in seguito effettuare le
operazioni in tutta semplicità... :))))))

Si volevo dire Pile scusate, ma dopo una giornata a programmare si è un pò
fusi :) e poi guardate a che ora avevo postato :) cmq si intendevo pure la
notazione polacca credo sia ottima per una calcolatrice.

 
hai a disposizione  varie possibilita' ti hanno gia' detto "scriviti la
funzione che elabora la stringa" ( ed eventualmente usa la notazione RPN
che e' piu' semplice di quella algebrica ) in alternativa puoi usare il
controllo script ( disponibile di default sul vb6 ) e dargli in pasto la
stringa da elaborare oppure provare questo parser:
http://www.Planet-Source-Code.com/xq/ASP/txtCodeId.985/lngWId.1/qx/vb/scripts/ShowCode.htm
anche una ricerca su google ti ritoran molte possibilita'