public Wallet(List<CoinSet> wallet) { for (int i = 0; i < wallet.Count(); i++ ) { CoinSet coin = new CoinSet(wallet[i].value, wallet[i].count); this.coins.Add(coin); } }
public void AddCoin(CoinSet coin) { if (this.CoinByValue(coin.value) != null) { this.CoinByValue(coin.value).count += coin.count; } else { this.coins.Add(coin); } }
// Возвращает кошелек с монетами, необходимыми для сдачи // int change - какую сумму надо вернуть // return - кошелек с набором монет public Wallet CoinsForChange(int change) { Wallet result = new Wallet(); coins.Sort(Coin.CompareByValue); foreach(var coin in this.coins) { int coinCountNeed = change / coin.value; // количество монет текущего значения if (coinCountNeed > coin.count) { coinCountNeed = coin.count; } if (coinCountNeed > 0) { CoinSet c = new CoinSet(coin.value, coinCountNeed); result.coins.Add(c); } change -= coinCountNeed * coin.value; if (change == 0) break; } if (change > 0) return null; return result; }