Повторение: расширенное управление циклами
Часть раздела Логика и управление потоком путешествия по GO на Coddy. Урок 5 из 68.
Задание
ЛегкоВ этом задании ты объединишь именованные операторы break с switch и fallthrough, чтобы создать систему мониторинга безопасности. Система ищет угрозы в нескольких зонах безопасности и классифицирует их, используя каскадные уровни оповещения.
Тебе будут переданы два входных значения:
- Строка, представляющая уровень угрозы, который нужно найти (например,
"high") - Строка, представляющая максимальное количество зон для поиска (например,
"3")
Тебе предоставлены следующие данные о зонах безопасности:
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"}
}Твоя задача:
- Разобрать уровень угрозы из первого входного значения
- Разобрать максимальное количество зон для поиска из второго входного значения
- Использовать вложенные циклы с именованным
breakдля поиска по зонам - Когда найдёшь целевой уровень угрозы, вывести
"Threat found at zone [zone_number] position [position]"и немедленно выйти из обоих циклов с помощью именованного оператора break - После обнаружения угрозы (или если угроза не найдена) использовать оператор
switchсfallthrough, чтобы показать оповещения безопасности на основе уровня угрозы, который ты искал
Оператор switch должен работать следующим образом:
- Для
"critical": вывести "CRITICAL: Lockdown initiated!" и перейти к выводу оповещения высокого уровня - Для
"high": вывести "HIGH: Security breach detected!" и перейти к выводу оповещения среднего уровня - Для
"medium": вывести "MEDIUM: Increased monitoring active" - Для
"low": вывести "LOW: Standard security protocols"
Если угроза не найдена после поиска в указанном количестве зон, выведи "Threat not found in searched zones" перед отображением оповещений безопасности. Используй индексацию с 0 для номеров зон и позиций внутри зон.
Попробуйте сами
package main
import (
"fmt"
"strconv"
)
func main() {
// Считайте входные данные
var threatLevel string
var maxZonesStr string
fmt.Scanln(&threatLevel)
fmt.Scanln(&maxZonesStr)
// Преобразуйте максимальное число зон в целое число
maxZones, _ := strconv.Atoi(maxZonesStr)
// Данные о зонах безопасности
zones := [][]string{
{"low", "medium", "low"},
{"medium", "high", "low"},
{"critical", "medium", "high"},
{"low", "critical", "medium"},
}
// TODO: Напишите свой код ниже
// Используйте вложенные циклы с помеченным break для поиска угрозы
// Выведите местоположение угрозы, если она найдена, или "Threat not found in searched zones", если не найдена
// Затем используйте switch с fallthrough для оповещений о безопасности
}Все уроки раздела Логика и управление потоком
1Продвинутое управление потоком
Оператор switch с `fallthrough`Выход из вложенных цикловПереход к следующей итерации конкретного циклаОператор `goto`Повторение: расширенное управление циклами4Проект: простой список задач
Настройка проектаДобавление задачи2Структуры и методы
Определение методов для структурПолучатели-значенияПолучатели-указателиВыбор получателейМетоды и функцииПовторение: поведение структур5Карты: подробный разбор
Карты структурУказатели как значения картПроверка карт на nilСравнение картПовторение — счётчик частоты слов8Проект: простой складской учёт
Обзор проектаПроверка запасов3Интерфейсы (основы)
Что такое интерфейс?Определение интерфейсаРеализация интерфейсаИспользование типов интерфейсовПустой интерфейсУтверждения типовПереключатель типовПовторение — формы и поведениеПотренируйтесь самостоятельно: Онлайн-компилятор Go