Menu
CoddyTech

Повторение: расширенное управление циклами

Часть раздела Логика и управление потоком путешествия по GO на Coddy. Урок 5 из 68.

challenge icon

Задание

Легко

В этом задании ты объединишь именованные операторы break с switch и fallthrough, чтобы создать систему мониторинга безопасности. Система ищет угрозы в нескольких зонах безопасности и классифицирует их, используя каскадные уровни оповещения.

Тебе будут переданы два входных значения:

  • Строка, представляющая уровень угрозы, который нужно найти (например, "high")
  • Строка, представляющая максимальное количество зон для поиска (например, "3")

Тебе предоставлены следующие данные о зонах безопасности:

zones := [][]string{
    {"low", "medium", "low"},
    {"medium", "high", "low"},
    {"critical", "medium", "high"},
    {"low", "critical", "medium"}
}

Твоя задача:

  1. Разобрать уровень угрозы из первого входного значения
  2. Разобрать максимальное количество зон для поиска из второго входного значения
  3. Использовать вложенные циклы с именованным break для поиска по зонам
  4. Когда найдёшь целевой уровень угрозы, вывести "Threat found at zone [zone_number] position [position]" и немедленно выйти из обоих циклов с помощью именованного оператора break
  5. После обнаружения угрозы (или если угроза не найдена) использовать оператор 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 для оповещений о безопасности
    
}

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Go