Sitat av
Hoffen
Det er ikkje noke sånt. 3 av 3 RPN kalkulatora eg har sett på no, opererer ikkje slik eg vil ha denna. Eg vil ha den til å operere på presist lik måte som Windows kalkulatoren.
Edit:
Som bronze sa, vil dette fungere som om:
- Eg lagrar svaret fra "8+8" i ein array.
- Så lagrar svaret "16" seg i arrayen, og eg kan bruke det vidare, til neste reknestykke. Eks : 16/4
RPN var et ganske dårlig forslag ettersom du ganske så tydelig peker ut at du er ute etter infix-notasjon (altså "vanlig" matematisk notasjon).
Hvis du skal tolke vilkårlig lengde infix, så bør du ha med en formening om operatørenes rekkefølge (som andre har pekt ut).
2 + 4 * 2, notert uten parentes skal strengt tatt gi samme svar som 2 * 4 + 2. Hvis du regner slavisk fra en side av bufferet ditt til den andre, altså først tar 2+4 og så multipliserer resultatet med 2 så får du et annet svar enn 2 * 4 som du så adderer 2 til.
Det beste tipset her er vel kanskje en lexer som tipset lengre oppe, alternativt så kan du tolke det manuelt (altså skrive en lexer i Java) og så dytte alt i en stack i en forutsigbar rekkefølge (altså multiplikasjon/divisjon før addisjon/subtraksjon, osv). Hvis du i tillegg skal støtte f.eks. parenteser osv, så blir dette fort mye mer komplisert enn de kodesnuttene du har vist hittil... men fortvil ikke, mye god læring her og det finnes også ganske gode eksempler på dette på internettet - så det er ingen grunn til at du skal finne opp alt kruttet på egenhånd.
Det er forøvrig ikke veldig vanskelig å skrive en grammatisk tolker (man kan f.eks. lage en enkel rekursiv nedstigningstolker) som gjør en helt okei jobb av enkel matematikk. Det blir ikke perfekt, men man lærer masse i prosessen.
En god programmerer er en som evner å gjenbruke og innhente inspirasjon fra eksisterende fungerende kode, i stedet for å skrive sin egen kode med feil i ;-).
Sist endret av MrBlaine; 8. april 2013 kl. 11:00.