Ei bine, totul este bine, formula este, dar cum poți calcula acum? Mai întâi a apărut ideea a fost că problema nu este nou, și cu siguranță cineva undeva a făcut deja așa mai departe. Căutați pe Internet a adus unele rezultate, dar, sincer, ma dezamăgit pentru că tot ce am găsit a fost o linie ideologică majoră, care a fost atât de clar, sau a fost gata de programe, cum ar fi un calculator șir de caractere.
Relevante a fost doar un exemplu din Delphi, în cazul în care a fost rezolvat această problemă, dar mai întâi, tot trebuie să fie rescrise în VB, și în al doilea rând, nu a fost încă mult de greu de făcut, ceea ce este surprinzător, deoarece funcționează în general.
Prin urmare, sa decis să scrieți în mod independent. Și asta sa întâmplat.
Deci, ce eșec este orice formulă, cu funcții matematice, exponentiație și paranteze? Această secvență de acțiuni care trebuie realizate cu elemente ale formulei pentru a obține rezultate în cele din urmă. Toate acțiunile au priorități diferite. Trebuie să învățăm computerul să pună în aplicare aceste acțiuni.
Orice formulă, indiferent câte elemente și operații conține, este mereu simplificată până la o simplă aritmetică cu patru tipuri de operații matematice: +, -, /, *.
50 + sin (1) * cos (0) / (450 / (78 + 45)) calcularea secvențial expresia în interiorul paranteze și funcțiile obținem:
50 + 0 * 1 / 3.65 este o funcție simplificată pentru operații aritmetice simple.
Concluzie: primul lucru de programat este "motorul", care ar putea citi astfel de expresii cu patru operații aritmetice simple.
Trebuie să furnizăm un șir de text care nu are nici o sarcină semantică pentru VB în așa fel încât să putem lucra cu elementele formulei ca și cu elementele independente separate, numere și semne ale expresiilor aritmetice. Iar legătura dintre ele și ordinea acțiunilor ar trebui păstrate. Prima ieșire, care mi sa părut reală - o matrice. Și așa,
P.S. Motorul este gata. Totul funcționează cu adevărat, dar:
În al doilea rând: Este doar motorul, iar formulele între paranteze și funcții el nu crede. Pentru a lucra cu paranteze, este necesar să se interpreteze secvențial expresia în interiorul paranteze în formula pentru a le înlocui cu rezultatul, și în cele din urmă, expresia simplificată a interpreta. Cu funcții la fel.
P.P.S. La mine toate aceste lucrări (inclusiv paranteze etc.). Vor fi întrebări - scrieți.