Logging

おつりアルゴリズム番外編。

おつりアルゴリズムのアクセスがまぁまぁ好評なので番外編を記載します。硬貨や紙幣の制限がない場合、単なるこれだけのアルゴリズムで動作させることが可能です。尚、自動販売機などは硬貨の枚数なども計算しておつりを算出しているだろうと思います。因みにこのアルゴリズムに硬貨の枚数などのアルゴリズムを追加することにより比較的に簡単に導入できるかと思います。

デモ21としてリンクを載せときます、実際に使用してみて勘どころを掴んでください。なお、このコードはHTMLとJSで動させています。PHPなどは使用していません。ジャバスクリプト(JavaScript)で結構いろいろなことを処理することが可能だと感じますね。WEBでなにか勉強しようと考えている場合、JS(ジャバスクリプト)は必須であり、ブラウザさえあれば普通に動くのでお勧めな言語かなと思います。

ソースコードは下記になります。https://zip358.com/tool/demo21/

document.getElementById("money").addEventListener("input",function(){
	var money = document.getElementById("money").value;
	var change = {
		calc1:{yen:10000,change:0,str1:"紙幣",str2:"枚"},
		calc2:{yen:5000,change:0,str1:"紙幣",str2:"枚"},
		// calc33:{yen:2000,change:0,str:"紙幣",str2:"枚"},
		calc3:{yen:1000,change:0,str1:"紙幣",str2:"枚"},
		calc4:{yen:500,change:0,str1:"硬貨",str2:"個"},
		calc5:{yen:100,change:0,str1:"硬貨",str2:"個"},
		calc6:{yen:50,change:0,str1:"硬貨",str2:"個"},
		calc7:{yen:10,change:0,str1:"硬貨",str2:"個"},
		calc8:{yen:5,change:0,str1:"硬貨",str2:"個"},
		calc9:{yen:1,change:0,str1:"硬貨",str2:"個"}
	};
	money = money.replace(/[,|,]/g,"");
	if(money.match(/[0-9]{1,}/g)){
		for (const key in change) {
			if (change.hasOwnProperty(key)) {
				const obj = change[key];
				change[key].change  = Math.floor(money / obj.yen);
				money = money % obj.yen;
			}
		}
		var anser = function() {
			var str = "";
			for (const key in change) {
				if (change.hasOwnProperty(key)) {
					const obj = change[key];
					if(obj.change){
						str+= obj.yen + "円、" + obj.str1 + "が" + obj.change + obj.str2 + "<br>";
					}
				}
			}
			return str;
		};
		document.getElementById("change_print").innerHTML = anser();
	}else{
		document.getElementById("change_print").innerHTML = "入力が不適切です!";
	}
});







    はてな?お金持ち?貧乏?まじめ?怠惰?前のページ

    死守せよ、だが軽やかに手放せ次のページ

    関連記事

    1. Logging

      モーショングラフィックスの上手い人たち。

      モーショングラフィックスの上手い人たち、この分野、まさしくセンスがな…

    2. Logging

      TOHOシネマ、一ヶ月フリーパスを!(´∀`)

      TOHOシネマ、一ヶ月フリーパスを手に入れました。これで毎日映画三昧…

    3. Logging

      DigitalCalendar

      Digital calendar using 'organic el…

    4. green classic typewriter with white paper

      Logging

      バルクアップデート、バルク=大量

      おはようございます、バルクアップデートという技を最近知りました。バル…

    5. Logging

      Chrome61になってWebUSB APIが使えるようになったらしい?ナニソレ

      WebUSB APIって何なのさ。公式ページを見てみても何なのかよ…

    2020年7月
     12345
    6789101112
    13141516171819
    20212223242526
    2728293031  

    カテゴリー

    アーカイブ

    PAGE TOP