Что купить
Часть раздела Основы путешествия по 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Повторение — True или False10Функции
Объявление функцииПараметры и аргументыВозвращаемые значенияМетки аргументовПовторение: функция SigmaПовторение: функция валидацииЗначения по умолчанию13Итерирование по последовательностям
Итерирование по элементамМетод enumerateИтерирование по строкам, ч. 1Итерирование по строкам, ч. 22Переменные
Let против VarАннотации типовЧислаСтрокиBooleanСоглашения об именованииИтоги — Инициализация переменных5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение: простая логикаЛогические операторы. Часть 3Тернарный оператор8Калькулятор разделения счета
Приветственное сообщениеПолучение ввода14Массивы: Продвинутый уровень
Срезы массивов. Часть 1Срезы массивов. Часть 2Операторы последовательностейМетод Contains3Опционалы
Что такое опционалыРазвертывание с помощью if letGuard letОператор объединения с nilИтоги — безопасное развертывание6Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторОператор SwitchSwitch с диапазонами9Циклы
Цикл For-InЦикл WhileЦикл Repeat-WhileBreakContinueПовторение: ФакториалДиапазоны в циклахВложенные циклыПовторение: Динамический ввод