Что купить
Часть раздела Основы путешествия по Swift на Coddy. Урок 86 из 86.
Задание
ЛегкоНапиши функцию whatToBuy, которая принимает itemNames, itemPrices и budget и возвращает массив названий товаров, которые можно купить в пределах бюджета.
Перебирай товары по порядку. Для каждого товара проверяй, не превысит ли общая сумма расходов бюджет, если добавить к ней его цену. Если не превысит, добавь название товара в список покупок и обнови общую сумму. Если товар превысит бюджет, пропусти его и продолжай проверять остальные товары.
Логика:
- Начни с общей суммы расходов
0.0и пустого массива результатов - Перебери все товары по индексу
- Если общая сумма расходов плюс цена текущего товара меньше или равна бюджету, добавь название товара в результат и обнови общую сумму расходов
- Если добавление товара превысит бюджет, пропусти его и перейди к следующему товару
- Верни массив названий товаров, которые можно купить
Параметры:
itemNames([String]): Массив названий товаровitemPrices([Double]): Массив соответствующих цен (той же длины, что и itemNames)budget(Double): Максимальная сумма, которую можно потратить
Возвращает: Массив названий товаров, которые можно купить в пределах бюджета, в том порядке, в котором они указаны ([String])
Пример:
// itemNames: ["Apple", "Bread", "Milk"]
// itemPrices: [2.0, 3.5, 4.0]
// budget: 6.0
// Result: ["Apple", "Bread"]
// (Apple costs 2.0, Bread costs 3.5, total is 5.5 which is within budget)
// (Milk would make total 9.5, which exceeds 6.0, so it's skipped)Попробуйте сами
func whatToBuy(itemNames: [String], itemPrices: [Double], budget: Double) -> [String] {
// Напишите код здесь
}
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеПовторение: простая математикаОператоры сравнения7Основы ввода-вывода
Функция printИнтерполяция строкВвод с ReadLineПреобразование типовПовторение: до 120Повторение: истина или ложь2Переменные
Let и VarАннотации типовЧислаСтрокаЛогический типСоглашения об именованииПовторение — инициализация переменных5Операторы, часть 2
Логические операторы, часть 1Логические операторы, часть 2Повторение: простая логикаЛогические операторы, часть 3Тернарный оператор8Калькулятор разделения счёта
Приветственное сообщениеВвод данных14Массивы: продвинутый уровень
Срезы массивов. Часть 1Срезы массивов. Часть 2Операторы последовательностейМетод Contains3Опциональные значения
Что такое опциональные значенияИзвлечение значения с помощью if letGuard letОператор объединения с nilПовторение — безопасное извлечение значения6Принятие решений
Условный оператор ifIf — ElseПовторение: простой калькуляторОператор switchSwitch с диапазонами9Циклы
Цикл for-inЦикл whileЦикл repeat-whileПрерывание циклаПереход к следующей итерацииПовторение — факториалДиапазоны в циклахВложенный циклПовторение — динамический вводПотренируйтесь самостоятельно: Песочница Swift