Menu
Coddy logo textTech

Kontynuowanie określonej pętli

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

Tak jak możesz używać etykiet z instrukcją break, aby wychodzić z określonych pętli, Go pozwala również używać etykiet z instrukcją continue. Oznaczone etykietą continue pomija bieżącą iterację wskazanej pętli i przechodzi do następnej.

Jest to szczególnie przydatne w zagnieżdżonych pętlach, gdy chcesz pominąć resztę bieżącej iteracji pętli zewnętrznej z poziomu pętli wewnętrznej, zamiast po prostu kontynuować pętlę wewnętrzną.

outer:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i == 1 && j == 0 {
            continue outer
        }
        fmt.Printf("i=%d, j=%d\n", i, j)
    }
    fmt.Println("End of outer loop iteration")
}

W tym przykładzie, gdy i == 1 && j == 0, instrukcja continue outer pomija resztę bieżącej iteracji pętli zewnętrznej, w tym pętlę wewnętrzną i komunikat „End of outer loop iteration”. Program przechodzi wtedy bezpośrednio do następnej iteracji pętli zewnętrznej, w której i przyjmuje wartość 2.

challenge icon

Wyzwanie

Łatwy

W tym wyzwaniu przećwiczysz używanie instrukcji continue z etykietą do kontrolowania wykonywania zagnieżdżonych pętli. Budujesz system przetwarzania danych, który musi pomijać niektóre iteracje zewnętrznej pętli na podstawie warunków znalezionych w pętlach wewnętrznych.

Otrzymasz dwa dane wejściowe:

  • Ciąg znaków reprezentujący liczbę wierszy do przetworzenia (np. "4")
  • Ciąg znaków reprezentujący liczbę będącą warunkiem pominięcia (np. "3")

Otrzymujesz następującą dwuwymiarową tablicę danych:

data := [][]int{
    {1, 2, 3, 4, 5},
    {6, 7, 8, 9, 10},
    {11, 12, 13, 14, 15},
    {16, 17, 18, 19, 20},
    {21, 22, 23, 24, 25}
}

Twoje zadanie:

  1. Przeanalizować liczbę wierszy z pierwszego wejścia, aby określić, ile wierszy przetworzyć
  2. Przeanalizować liczbę będącą warunkiem pominięcia z drugiego wejścia
  3. Użyć zagnieżdżonych pętli z instrukcją continue z etykietą do przetworzenia danych
  4. Dla każdego wiersza sprawdzić wartość w każdej kolumnie tego wiersza
  5. Jeśli w którejkolwiek kolumnie wiersza znajdziesz liczbę będącą warunkiem pominięcia, użyć instrukcji continue z etykietą, aby pominąć dalsze przetwarzanie tego wiersza i przejść do następnego wiersza
  6. Dla wierszy, które nie zawierają liczby będącej warunkiem pominięcia, wypisać "Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]"
  7. Dla wierszy, które zawierają liczbę będącą warunkiem pominięcia, wypisać "Skipping row [row_number] due to condition"

Numery wierszy należy podawać przy indeksowaniu od 0 (pierwszy wiersz ma numer 0). Przetwarzaj tylko liczbę wierszy określoną w pierwszym wejściu i sprawdzaj tylko pierwszych 5 kolumn każdego wiersza.

Spróbuj swoich sił

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Wczytaj dane wejściowe
    var rowsInput string
    var skipConditionInput string
    fmt.Scanln(&rowsInput)
    fmt.Scanln(&skipConditionInput)
    
    // Przetwórz dane wejściowe
    numRows, _ := strconv.Atoi(rowsInput)
    skipCondition, _ := strconv.Atoi(skipConditionInput)
    
    // Podana dwuwymiarowa tablica danych
    data := [][]int{
        {1, 2, 3, 4, 5},
        {6, 7, 8, 9, 10},
        {11, 12, 13, 14, 15},
        {16, 17, 18, 19, 20},
        {21, 22, 23, 24, 25},
    }
    
    // TODO: Napisz swój kod poniżej
    // Użyj zagnieżdżonych pętli z etykietowaną instrukcją continue, aby przetworzyć dane
    // Sprawdź każdy wiersz pod kątem liczby określającej warunek pominięcia
    // Wyświetl odpowiednie komunikaty w zależności od tego, czy warunek został spełniony
    
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Go online