日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【FCC】Exact Change 收银程序

發布時間:2023/11/21 综合教程 43 生活家
生活随笔 收集整理的這篇文章主要介紹了 【FCC】Exact Change 收银程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:
設計一個收銀程序 checkCashRegister() ,其把購買價格(price)作為第一個參數 , 付款金額 (cash)作為第二個參數, 和收銀機中零錢 (cid) 作為第三個參數.

cid 是一個二維數組,存著當前可用的找零.

當收銀機中的錢不夠找零時返回字符串 "Insufficient Funds". 如果正好則返回字符串 "Closed".

否則, 返回應找回的零錢列表,且由大到小存在二維數組中.

代碼:

<script type="text/javascript">
	function checkCashRegister(price, cash, cid) {
		var change;
		var payback = {
			'PENNY': 1,
			'NICKEL': 5,
			'DIME': 10,
			'QUARTER': 25,
			'ONE': 100,
			'FIVE': 500,
			'TEN': 1000,
			'TWENTY': 2000,
			'ONE HUNDRED': 10000
		};
		//找零
		change = (cash - price) * 100;

		console.log('需要找零:' + change);

		var keys = Object.keys(payback);
		var i = keys.length - 1;

		var cidObj = {};
		var objCopy = {};
		for (i in cid) {
			cidObj[cid[i][0]] = cid[i][1] * 100;
			//復制一份,不能直接使用賦值語句
			objCopy[cid[i][0]] = cid[i][1] * 100;
		}

		console.log(cidObj);
		//遍歷收銀機中的零錢和最小零錢單位
		while (i >= 0) {
			while (payback[keys[i]] <= change && cidObj[keys[i]]) {
				change -= payback[keys[i]]; //如果要找零的錢大于最小找零單位且其中有錢,從其中找零
				cidObj[keys[i]] -= payback[keys[i]]; //找零后從零錢盒中減去已找零費用
			}
			i--;
		}

		console.log(cidObj);

		var result = [];
		//如果遍歷之后change不為0,說明零錢不夠找不開
		if (change) {
			return "Insufficient Funds";
		}

		for (i in cidObj) {
			if (cidObj[i]) {
				break;
			} else if (i === keys[keys.length - 1]) {
				return "Closed";
			}

		}

		for (i in objCopy) {
			if (objCopy[i] !== cidObj[i]) {
				result.unshift([i, (objCopy[i] - cidObj[i]) / 100]);
			}
		}
		return result;

	}
</script>

參考資料:
https://www.jianshu.com/p/6b76d60d8f49

總結

以上是生活随笔為你收集整理的【FCC】Exact Change 收银程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。