Menu
Coddy logo textTech

Podsumowanie — zaawansowane sterowanie pętlami

Część sekcji Logika i przepływ sterowania ścieżki GO w Coddy. Lekcja 5 z 68.

challenge icon

Wyzwanie

Łatwy

W tym wyzwaniu połączysz instrukcje break z etykietami z switch i fallthrough, aby utworzyć system monitorowania bezpieczeństwa. System przeszukuje wiele stref bezpieczeństwa w poszukiwaniu zagrożeń i kategoryzuje je za pomocą kaskadowych poziomów alertów.

Otrzymasz dwa dane wejściowe:

  • Ciąg znaków określający poziom zagrożenia, którego należy szukać (np. "high")
  • Ciąg znaków określający maksymalną liczbę przeszukiwanych stref (np. "3")

Otrzymujesz następujące dane dotyczące stref bezpieczeństwa:

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

Twoje zadanie:

  1. Odczytaj poziom zagrożenia z pierwszego wejścia
  2. Odczytaj maksymalną liczbę przeszukiwanych stref z drugiego wejścia
  3. Użyj zagnieżdżonych pętli z etykietą dla break, aby przeszukać strefy
  4. Po znalezieniu docelowego poziomu zagrożenia wypisz "Threat found at zone [zone_number] position [position]" i natychmiast zakończ obie pętle, używając etykiety dla instrukcji break
  5. Po znalezieniu zagrożenia (lub jeśli nie zostanie ono znalezione) użyj instrukcji switch z fallthrough, aby wyświetlić alerty bezpieczeństwa na podstawie szukanego poziomu zagrożenia

Instrukcja switch powinna działać następująco:

  • Dla "critical": wypisz "CRITICAL: Lockdown initiated!" i przejdź dalej, aby wypisać również alert o wysokim poziomie
  • Dla "high": wypisz "HIGH: Security breach detected!" i przejdź dalej, aby wypisać również alert o średnim poziomie
  • Dla "medium": wypisz "MEDIUM: Increased monitoring active"
  • Dla "low": wypisz "LOW: Standard security protocols"

Jeśli zagrożenie nie zostanie znalezione po przeszukaniu określonej liczby stref, wypisz "Threat not found in searched zones" przed wyświetleniem alertów bezpieczeństwa. Użyj indeksowania od 0 dla numerów stref i pozycji w strefach.

Spróbuj swoich sił

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Odczytaj dane wejściowe
    var threatLevel string
    var maxZonesStr string
    fmt.Scanln(&threatLevel)
    fmt.Scanln(&maxZonesStr)
    
    // Przekonwertuj maksymalną liczbę stref na liczbę całkowitą
    maxZones, _ := strconv.Atoi(maxZonesStr)
    
    // Dane stref bezpieczeństwa
    zones := [][]string{
        {"low", "medium", "low"},
        {"medium", "high", "low"},
        {"critical", "medium", "high"},
        {"low", "critical", "medium"},
    }
    
    // TODO: Napisz swój kod poniżej
    // Użyj zagnieżdżonych pętli z oznaczonym break, aby wyszukać zagrożenie
    // Wypisz lokalizację zagrożenia, jeśli je znaleziono, lub "Threat not found in searched zones", jeśli go nie znaleziono
    // Następnie użyj switch z fallthrough do obsługi alertów bezpieczeństwa
    
}

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Go online