C++ WinForms: Доработка калькулятора (AC, %, ±, .)

Этот урок посвящен доработке программы-калькулятора, включающей реализацию оставшихся кнопок.

Очистка калькулятора (Button AC)

Реализуем четыре кнопки: очистку, изменение знака, вычисление процентов и добавление десятичной точки. Начнём с очистки.

  1. Переименование кнопки: Изменим имя кнопки на Button AC.
  2. Обработчик события: Создадим обработчик события для кнопки.
  3. Сброс значений: В обработчике события:
    • Установим текст лейбла в «0».
    • Вернём цвет текста лейбла в белый (ранее изменялся при делении на ноль).
    • Сбросим значение переменной First в 0.
    • Сбросим значение переменной UserAction в пробел и плюс.
    • Сбросим значение переменной isEquel в false.

Изменение знака числа (+/-)

  1. Переименование кнопки: Изменим имя кнопки на Button +/-.
  2. Обработчик события: Создадим обработчик события.
  3. Умножение на -1: В обработчике события:
    • Получим число из текстового поля.
    • Умножим его на -1, используя операцию *= -1.
    • Преобразуем результат обратно в строку и установим его в текстовое поле.

Вычисление процентов (%)

  1. Переименование кнопки: Изменим имя кнопки на Button %.
  2. Обработчик события: Создадим обработчик события.
  3. Логика вычисления: При нажатии кнопки:
    • Запомним действие пользователя (MassAction) как вычисление процентов.
    • Установим текст лейбла в «0».
    • Вызовем функцию MassAction с символом «%».
    • В функции MassAction, при обработке символа «%», выполним вычисление: первое число * второе число / 100. Необходимо учитывать, что использование типа данных integer может приводить к потере точности при работе с дробными числами.

Добавление десятичной точки (Button .)

  1. Переименование кнопки: Изменим имя кнопки на Button ..
  2. Обработчик события: Создадим обработчик события.
  3. Добавление точки: В обработчике события:
    • Создадим строковую переменную text для хранения текста из лейбла.
    • Проверим наличие точки в строке text с помощью метода Contains(".").
    • Если точка отсутствует, добавим её к строке text и обновим текст лейбла.

Корректировка обработки данных

В связи с добавлением поддержки чисел с плавающей точкой, необходимо внести следующие изменения:

  1. Изменим тип переменной First на float (или double для большей точности).
  2. В функции MassAction заменим конвертацию ToInt32 на ToDouble (или ToSingle).
  3. В обработчике кнопки +/- также заменим конвертацию на ToDouble (или ToSingle).
  4. Для корректной обработки десятичных чисел, необходимо использовать запятую в качестве десятичного разделителя при вводе и конвертации данных.

После внесенных изменений калькулятор корректно обрабатывает целые и дробные числа.

Что будем искать? Например,программа