
Ako svoj Jednostavni kalkulator želite učiniti puno pametnijim, ovaj je post za vas.
Možete pitati: "Što nije u redu s mojim jednostavnim kalkulatorom" Pa, možda će sve radnje obaviti ispravno, ali redoslijed u kojem ih čini vjerojatno je pogrešan.
Jednostavni kalkulator sadrži samo četiri operacije: zbrajanje, oduzimanje, dijeljenje i množenje. Mnogi od nas možda su u srednjoj školi učili o prednosti operatora: dijeljenje i množenje imaju isti prioritet i imaju veći prioritet od zbrajanja i oduzimanja koji imaju isti prioritet.

Brzi pregled prioriteta operatora možete pronaći ovdje: //www.math.utah.edu/online/1010/precedence/.
Razlog zbog kojeg ističem prednost operatora je taj što jednostavan kalkulator pogrešno izvodi većinu izračuna. Na primjer, 1 + 2x3 bi prema normalnom kalkulatoru trebao biti jednak 7, ali jednostavni kalkulator daje rezultat 9.
Razlog zbog kojeg jednostavni kalkulator sve čini pogrešno je taj što samo množi dva operanda, s operatorom između njih, i daje rezultat.
Jednostavno ne možemo kriviti jednostavni kalkulator. Napokon, trebalo je biti jednostavno. Dakle, sada biste mogli početi razmišljati o tome kako preurediti operatore kako biste dobili točan rezultat. Da, na dobrom ste putu. Za to moramo znati o još dva pojma u računalnoj znanosti: Infix izrazi i Postfix izrazi.
Jednostavnim riječima, aritmetički izrazi koje razumijemo su Infix izrazi, a aritmetički izrazi koje računalo razumije su Postfix izrazi.

I izrazi infix i postfix stvaraju iste rezultate. Samo su ljudi navikli rješavati infiksne izraze, a računala su navikla rješavati postfix izraze.
Sljedeća ključna značajka u izrazu postfiksa jest da sadrži operatore koji slijede operande u skladu s prioritetom, što računalu olakšava njihovu procjenu pomoću snopova i daje točan rezultat.
Do sada ste sigurno razmišljali o tome kako pretvoriti infiksni izraz koji je unijeo vaš korisnik u postfix izraz. Postoji algoritam koji pretvara infiksni izraz u postfiksni izraz koji se ovdje može naći .
Evo kako ovaj postupak izgleda:

Izraz postfiksa treba procijeniti algoritmom koji se može naći ovdje . Slično je vrednovanju izvedenom jednostavnim kalkulatorom, osim što operatori nasljeđuju operande u izrazima postfiksa.
Na kraju, primarni motiv pretvaranja izraza infiksa u izraz postfiksa je očuvanje prednosti operatora dok računalo procjenjuje izraz.
Check out moje potpuno funkcionalna kalkulator koji uključuje ove principe ovdje .