Добавление математических операций
Реализуем операцию сложения. При нажатии кнопки «+» в текстовое поле добавляется знак «+». Для корректной работы необходимо:
- Запомнить число перед знаком операции.
- Удалить знак «+» после ввода следующего числа.
- Вывести сумму после нажатия кнопки «=».
Добавим переменные:
- numberBeforeOperation: переменная типа Double, хранящая число перед операцией; начальное значение 0.
- mathOperation: булева переменная, указывает, была ли нажата кнопка математической операции; начальное значение false.
Добавим проверку: если mathOperation == true, в текстовое поле вводится только новое значение с кнопки, без предыдущего. Затем устанавливаем mathOperation = false.
В противном случае, действуем как ранее: берем текущее значение из текстового поля, добавляем новое значение с кнопки, конвертируем в Double и присваиваем переменной numberOnScreen.
Реализация математических операций
Добавим кнопки вычитания, умножения и деления. Создадим переменную operation типа Double для кода нажатой кнопки операции. Проверим нажатие кнопки «=» или «C» (очистка) с использованием оператора && (логическое И).
Если нажата кнопка операции (sender.tag != 10 && sender.tag != 15), выполняем математические операции. Значения sender.tag:
- 11: деление
- 12: умножение
- 13: вычитание
- 14: сложение
При нажатии на «=» (sender.tag == 15), выполняем выбранную операцию с numberBeforeOperation и numberOnScreen:
if operation == 11 { result.text = String(numberBeforeOperation / numberOnScreen) }
else if operation == 12 { result.text = String(numberBeforeOperation * numberOnScreen) }
else if operation == 13 { result.text = String(numberBeforeOperation - numberOnScreen) }
else if operation == 14 { result.text = String(numberBeforeOperation + numberOnScreen) }
Результат выводим в текстовое поле.
Кнопка очистки
Кнопка очистки (sender.tag == 10) обнуляет переменные: result.text, numberBeforeOperation, numberOnScreen, operation.
Получился функциональный калькулятор, выполняющий базовые арифметические операции. Проверка показала корректность всех операций, включая очистку.