Go if и switch: несколько значений в одной ветке
Зона железнодорожного билета
Небольшой билетный автомат, установленный на перроне, обслуживает несколько направлений городской электрички. Все они заранее распределены по зонам в зависимости от удалённости от начальной точки маршрута: самые ближние станции образуют ближнюю зону, чуть дальше расположены станции средней зоны, а конечные точки сети — самые отдалённые — относятся к дальней зоне. Каждая зона объединяет ровно два направления, и это соответствие строго зафиксировано внутри системы.
Когда пассажир подходит к автомату, ему достаточно назвать направление и указать, сколько билетов ему нужно. Автомат принимает направление одним словом и число, после чего мгновенно определяет, к какой зоне оно относится. Если пассажир ошибся с направлением или ввёл что-то, чего автомат не знает, система сообщает об этом напрямую, не оставляя запрос без ответа. Точно так же автомат реагирует на явно некорректное число билетов — нулевое или отрицательное значение здесь не имеет смысла и тоже требует отдельной реакции.
На экране в итоге появляется ровно одна строка: либо название зоны, к которой принадлежит выбранное направление, либо сообщение о том, что количество билетов задано неверно, либо уведомление о нераспознанном направлении. Именно такой лаконичный и однозначный ответ должна формировать программа в каждом из возможных случаев.
Формат ввода
Направление одним словом и целое количество билетов. Регистр букв имеет значение.
Правила вывода
Сначала проверьте количество билетов через if. Для неположительного количества выведите Ошибка: количество билетов. Иначе определите результат через switch:
ЛеснаяилиРечная—Ближняя зона;ЦентрилиМузей—Средняя зона;АэропортилиВокзал—Дальняя зона;- любое другое направление —
Неизвестное направление.
Выведите ровно одну строку.
Пример
- Ввод
Лесная 2
- Вывод
Ближняя зона
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- Go if else и оператор ||: несколько кодов для одного результата
- Go fmt.Sprintf: форматирование строки и числа с двумя знаками
- Go strings.Split и strconv.ParseFloat: сумма чисел в строке
- Go pointer receiver и встраивание struct: изменяемый счётчик
- Go: композиция интерфейсов ReaderNotifier и обработка ошибки
- Go encoding/json: фильтрация потока JSON по полю alert
