Menu
Coddy logo textTech

Riepilogo - Controllo avanzato dei cicli

Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 5 di 68.

challenge icon

Sfida

Facile

In questa sfida combinerai istruzioni break con etichetta con switch e fallthrough per creare un sistema di monitoraggio della sicurezza. Il sistema cerca minacce in più zone di sicurezza e le categorizza con livelli di avviso a cascata.

Riceverai due input:

  • Una stringa che rappresenta il livello di minaccia da cercare (ad es., "high")
  • Una stringa che rappresenta il numero massimo di zone in cui cercare (ad es., "3")

Ti vengono forniti i seguenti dati relativi alle zone di sicurezza:

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

Il tuo compito è:

  1. Analizzare il livello di minaccia dal primo input
  2. Analizzare il numero massimo di zone in cui cercare dal secondo input
  3. Usare cicli annidati con un break con etichetta per cercare nelle zone
  4. Quando trovi il livello di minaccia cercato, stampare "Threat found at zone [zone_number] position [position]" e uscire immediatamente da entrambi i cicli usando un break con etichetta
  5. Dopo aver trovato la minaccia (o se non viene trovata), usare un'istruzione switch con fallthrough per visualizzare gli avvisi di sicurezza in base al livello di minaccia che stavi cercando

L'istruzione switch dovrebbe funzionare così:

  • Per "critical": stampa "CRITICAL: Lockdown initiated!" e prosegui con l'avviso di livello alto
  • Per "high": stampa "HIGH: Security breach detected!" e prosegui con l'avviso di livello medio
  • Per "medium": stampa "MEDIUM: Increased monitoring active"
  • Per "low": stampa "LOW: Standard security protocols"

Se la minaccia non viene trovata dopo aver cercato nel numero di zone specificato, stampa "Threat not found in searched zones" prima di visualizzare gli avvisi di sicurezza. Usa l'indicizzazione a partire da 0 per i numeri delle zone e le posizioni all'interno delle zone.

Provalo tu

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Leggi l'input
    var threatLevel string
    var maxZonesStr string
    fmt.Scanln(&threatLevel)
    fmt.Scanln(&maxZonesStr)
    
    // Converti il numero massimo di zone in un intero
    maxZones, _ := strconv.Atoi(maxZonesStr)
    
    // Dati delle zone di sicurezza
    zones := [][]string{
        {"low", "medium", "low"},
        {"medium", "high", "low"},
        {"critical", "medium", "high"},
        {"low", "critical", "medium"},
    }
    
    // TODO: Scrivi il tuo codice qui sotto
    // Usa cicli annidati con break etichettato per cercare la minaccia
    // Stampa la posizione della minaccia se viene trovata, oppure "Threat not found in searched zones" se non viene trovata
    // Poi usa switch con fallthrough per gli avvisi di sicurezza
    
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Go online