逆ポーランド記法電卓を利用者さんが作ってくれました。
逆ポーランド記法とは通常の四則演算の式とは違う書き方をする方法です。
日本語の読み方と相性が良いと言われています。
例えば、1 + 1 は 1 1 + と書きます(1に1を足す)。
通常の数式 | 逆ポーランド記法 | 答え |
---|---|---|
1 + 1 | 1 1 + | 2 |
1 + 2 * 3 | 1 2 3 * + | 7 |
(1 + 5) * (2 + 3) | 1 5 + 2 3 + * | 30 |
逆ポーランド記法電卓
ここに答えを表示
ソースコード
index.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>逆ポーランド記法電卓</title> </head> <body> <h1>逆ポーランド記法電卓</h1> <input type="text" id="in" placeholder="逆ポーランド記法で入力"> <button id="bt">計算</button> <p id="re">ここに答えを表示</p> <script src="./script.js"></script> </body> </html> |
script.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
const input = document.getElementById("in") const btn = document.getElementById("bt") const result = document.getElementById("re") function calc() { // 空のスタック const stack = [] // 入力文字を変数に代入 // trim は先頭および末尾の空白と、行終端記号の文字を削除する let str = input.value.trim() if (str === "") { alert("未入力です") return } // 入力文字をスペースで区切り配列に const words = str.split(" ") console.log(words) for (const v of words) { const parsed = parseInt(v, 10) if (isNaN(parsed)) { let a2 = stack.pop() let a1 = stack.pop() switch (v) { case "+": stack.push(a1 + a2) break; case "-": stack.push(a1 - a2) break; case "*": stack.push(a1 * a2) break; case "/": stack.push(a1 / a2) break; } } else { stack.push(parsed) } } result.innerHTML = stack[0] } btn.addEventListener("click", calc) |
ライブインホープはパソコン初心者の方も歓迎します。
見学・体験利用は随時受付中
フリーダイヤル
0120-053-888