Menu
Coddy logo textTech

Abbrechen von verschachtelten Schleifen

Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy. Lektion 2 von 68.

Beim Arbeiten mit verschachtelten Schleifen beendet eine reguläre break-Anweisung nur die innerste Schleife. Go bietet jedoch Labels an, die es ermöglichen, direkt aus äußeren Schleifen auszubrechen, was eine präzise Kontrolle über komplexe Schleifenstrukturen ermöglicht.

Ein Label ist ein Bezeichner, gefolgt von einem Doppelpunkt, den Sie vor einer Schleife platzieren. Sie können dann break gefolgt vom Labelnamen verwenden, um diese spezifische Schleife zu verlassen, selbst aus verschachtelten Schleifen heraus.

outer:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i == 1 && j == 1 {
            break outer
        }
        fmt.Printf("i=%d, j=%d\n", i, j)
    }
}

In diesem Beispiel wird, wenn die Bedingung i == 1 && j == 1 erfüllt ist, durch break outer sowohl die innere als auch die äußere Schleife sofort beendet. Dies ist besonders nützlich bei der Suche in 2D-Datenstrukturen, wenn Sie die Suche vollständig abbrechen möchten, sobald Sie das Gesuchte gefunden haben.

challenge icon

Aufgabe

Einfach

In dieser Herausforderung übst du die Verwendung markierter break-Anweisungen, um verschachtelte Schleifen beim Durchsuchen eines 2D-Rasters zu verlassen. Du musst eine bestimmte Zielzahl im Raster finden und die Suche sofort beenden, sobald du sie gefunden hast.

Du erhältst zwei Eingaben:

  • Eine Zeichenfolge, die die Dimensionen des Rasters im Format "rows,cols" darstellt (z. B. "3,4")
  • Eine Zeichenfolge, die die zu suchende Zielzahl darstellt (z. B. "7")

Das folgende 2D-Raster mit Zahlen wird dir bereitgestellt:

grid := [][]int{
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
}

Deine Aufgabe ist:

  1. Die Dimensionen aus der ersten Eingabe zu analysieren, um zu bestimmen, wie viele Zeilen und Spalten durchsucht werden sollen
  2. Die Zielzahl aus der zweiten Eingabe zu analysieren
  3. Verschachtelte Schleifen mit einem markierten break zu verwenden, um das Raster zu durchsuchen
  4. Wenn du die Zielzahl findest, "Found [target] at position ([row], [col])" auszugeben und beide Schleifen sofort mithilfe des markierten break zu verlassen
  5. Wenn du die Suche abschließt, ohne die Zielzahl zu finden, "Target [target] not found" auszugeben

Die Position sollte mithilfe einer 0-basierten Indizierung angegeben werden (die erste Zeile ist 0, die erste Spalte ist 0).

ERFORDERLICHES AUSGABEFORMAT: [Dein übersetzter Inhalt hier]

Probier es selbst

package main

import (
    "fmt"
    "strconv"
    "strings"
)

func main() {
    // Eingabe lesen
    var dimensions string
    var targetStr string
    fmt.Scanln(&dimensions)
    fmt.Scanln(&targetStr)
    
    // Dimensionen parsen
    dimParts := strings.Split(dimensions, ",")
    rows, _ := strconv.Atoi(dimParts[0])
    cols, _ := strconv.Atoi(dimParts[1])
    
    // Zielzahl parsen
    target, _ := strconv.Atoi(targetStr)
    
    // Vordefiniertes Gitter
    grid := [][]int{
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12},
    }
    
    // TODO: Schreiben Sie Ihren Code unten
    // Verwenden Sie verschachtelte Schleifen mit einem benannten Break, um nach dem Ziel zu suchen
    
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Go-Compiler