예제 #1
0
        void UpdateBankedCoins()
        {
            foreach (var coin in InsertedCoins)
            {
                BankedCoins.Add(coin);
            }

            InsertedCoins = new List <Coin>();
        }
예제 #2
0
        /// <summary>
        /// To buy a product, there needs to be 1 Nickel (0.05) and 1 Dime (0.10) OR 3 Nickels
        /// Most that can be expected is $1.00 for Cola, made of 4 Quarters. Customers buying other Products should enter 3 Quarters maximum.
        /// </summary>
        void HasChangeAvailable()
        {
            var nickels = BankedCoins.Where(coin => coin.CoinType == CoinType.Nickel).Count();
            var dimes   = BankedCoins.Where(coin => coin.CoinType == CoinType.Dime).Count();

            if (!((dimes > 0 && nickels > 0) || nickels > 2))
            {
                NoChange = true;
            }
        }
예제 #3
0
        public void CalculateChangeInCoins(decimal change)
        {
            var coinsToReturn  = new Dictionary <CoinType, int>();
            var availableCoins = BankedCoins.GroupBy(coin => coin.CoinType);

            var availableDimes = availableCoins.Where(coins => coins.Key == CoinType.Dime).FirstOrDefault() != null?availableCoins.Where(coins => coins.Key == CoinType.Dime).FirstOrDefault().Count() : 0;

            var availableNickels = availableCoins.Where(coins => coins.Key == CoinType.Nickel).FirstOrDefault() != null?availableCoins.Where(coins => coins.Key == CoinType.Nickel).FirstOrDefault().Count() : 0;

            var dimes = Math.Min(Math.Floor(change / 0.10m), availableDimes);

            change -= 0.10m * dimes;

            coinsToReturn.Add(CoinType.Dime, (int)dimes);

            var nickels = Math.Min(Math.Floor(change / 0.05m), availableNickels);

            coinsToReturn.Add(CoinType.Nickel, (int)nickels);

            CoinsToDispense = coinsToReturn;
        }