8.1 Геттеры, сеттеры и инкапсуляция

8.1.1 Температура под контролем

Условие

Реализуйте класс Temperature с закрытым целочисленным полем, содержащим температуру в десятых долях градуса. Начальное значение — 0. Допустимы значения от 0 до 500 включительно.

Метод bool set_raw(int value) записывает допустимое значение и возвращает true. Если значение недопустимо, метод возвращает false, сохраняя прежнее состояние. Геттер int get_raw() const возвращает сохранённое значение, а double get_celsius() const — температуру в градусах Цельсия.

Создайте один объект и последовательно передайте ему все введённые значения через сеттер. После каждого вызова выведите успешность изменения и результаты обоих геттеров. Прямой доступ к полю из main запрещён.

Ограничения

Время: 2 секунды. Память: 64 МиБ. Вывод: до 2 МиБ. Язык: C++17.

Входные данные

В первой строке вводится число N — количество попыток изменения. Во второй строке вводятся N целых значений. Ограничения: 1 ≤ N ≤ 1000, −1000 ≤ value ≤ 1000.

Выходные данные

Выведите N строк. Каждая содержит через пробел OK или ERROR, текущее значение в десятых долях градуса и значение в градусах Цельсия с шестью знаками после десятичной точки. Статус относится к текущему вызову сеттера, значения — к состоянию объекта после вызова.

Примеры

Вход 1
3
250 500 0
Ожидаемый выход
OK 250 25.000000
OK 500 50.000000
OK 0 0.000000
Вход 2
3
-1 270 501
Ожидаемый выход
ERROR 0 0.000000
OK 270 27.000000
ERROR 270 27.000000
Вход 3
2
0 0
Ожидаемый выход
OK 0 0.000000
OK 0 0.000000

Пробный запуск

Код берётся из редактора. Запуск не создаёт посылку и не влияет на баллы.

Выберите пример или введите свои данные и нажмите «Запустить».

Текущая попытка

Отправьте решение. Этапы и результат появятся здесь автоматически.

Все попытки

Войдите, чтобы видеть свои попытки.

Редактор

Один файл до 64 КиБ · Tab / Shift+Tab — отступ · Esc — выход из редактора · черновик сохраняется для этого аккаунта, задачи и языка.