/// <summary> /// Массивы товаров. Все массивы должны быть одинаковой длины. /// </summary> /// <param name="itemsNames">Массив имен товаров</param> /// <param name="itemsPrices">Массив цен на товары</param> /// <param name="itemsNums"Массив количеств товаров></param> public Machine(string[] itemsNames, uint[] itemsPrices, uint[] itemsNums) { if (itemsNames.Length != itemsNums.Length || itemsNames.Length != itemsPrices.Length) throw new ArgumentException("Длины массивов должны быть равными"); _itemsNames = (string[])itemsNames.Clone(); _itemsPrices = (uint[])itemsPrices.Clone(); _itemsNums = (uint[])itemsNums.Clone(); _wal = new Wallet(); }
// создание кошелька покупателя public IWallet CreateWallet() { var wallet = new Wallet(); wallet.AddMoney( new Dictionary<Coin, uint> { { new Coin(1U), 10U }, { new Coin(2U), 10U }, { new Coin(5U), 10U }, { new Coin(10U), 7U } } ); return wallet; }
// создание торгового автомата public IVendingMachine CreateVendingMachine() { // начальные деньги в автомате var machineMoney = new Wallet(); // продукты var products = new Dictionary<Product, uint> { // кексы по 50 рублей, 4 штуки { new Product{Name = "Cupcake", Price = 50U }, 4U }, // печенье по 10 рублей, 3 штуки { new Product{Name = "Cookies", Price = 10U }, 3U }, // вафли по 30 рублей, 10 штук { new Product{Name = "Waffles", Price = 30U}, 10U }, }; // создание торгового автомата var vendingMachine = new VendingMachine(products, machineMoney); return vendingMachine; }
static void Main(string[] args) { Random gen = new Random(); m = new Machine(new string[] { "Кексы", "Печенье", "Вафли" }, new uint[] { 50, 10, 30 }, new uint[] { 4, 3, 10 }); u = new Wallet(150, gen); while (true) { ShowCurState(); ShowTip(); int s = GetCom(); if (s == -2) break; } }
/// <summary> /// Внести деньги в автомат /// </summary> /// <param name="m">Кошелек с монетами</param> public void PutMoney(Wallet m) { UserMoney += m.Total; _wal.AddMoney(m); }
/// <summary> /// Извлекает из кошелька заданную сумму оптимальным способом /// </summary> /// <param name="total">Сумма</param> /// <returns>Кошелек с заданной суммой</returns> public Wallet GetMoney(uint total) { Wallet tmp = new Wallet(); int res = -1; try { do { if (res != -1) { total -= _values[res]; Coins[res]--; tmp.Coins[res]++; } res = ChooseCoin(total); } while (res != -1); } catch (ArgumentException e) { this.AddMoney(tmp); throw e; } return tmp; }
/// <summary> /// Внести деньги в кошелек /// </summary> /// <param name="w">Кошелек из которого переносятся деньги</param> public void AddMoney(Wallet w) { for (int i = 0; i < Coins.Length; i++) { Coins[i] += w.Coins[i]; } }