Menu
Coddy logo textTech

Продолжение конкретного цикла

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

Подобно тому как можно использовать метки с break, чтобы выйти из определённых циклов, Go также позволяет использовать метки с оператором continue. Помеченный continue пропускает текущую итерацию указанного loop и переходит к следующей итерации.

Это особенно полезно в nested loops, когда нужно пропустить оставшуюся часть текущей iteration цикла outer из inner loop, а не просто продолжить inner loop.

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")
}

В этом примере, когда i == 1 && j == 0, инструкция continue outer пропускает оставшуюся часть текущей итерации внешнего цикла, включая внутренний цикл и сообщение «End of outer loop iteration». Затем программа переходит непосредственно к следующей итерации внешнего цикла, где i становится равным 2.

challenge icon

Задание

Легко

В этом задании ты потренируешься использовать помеченные операторы continue для управления выполнением вложенных циклов. Ты создаёшь систему обработки данных, которой нужно пропускать определённые итерации внешнего цикла на основе условий, обнаруженных во внутренних циклах.

Ты получишь два входных значения:

  • Значение string, представляющее number строк для обработки (например, "4")
  • Значение string, представляющее number условия skip (например, "3")

Тебе предоставлен следующий двумерный data array:

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}
}

Твоя задача:

  1. Выполнить Parse number строк из первого входного значения, чтобы определить, сколько строк обработать
  2. Выполнить Parse number условия skip из второго входного значения
  3. Использовать вложенные циклы с помеченным continue для обработки данных
  4. Для каждой строки проверить каждое значение столбца в этой строке
  5. Если в любом столбце строки найден number условия skip, использовать помеченный continue, чтобы пропустить оставшуюся обработку этой строки и перейти к следующей строке
  6. Для строк, которые не содержат number условия skip, вывести "Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]"
  7. Для строк, которые содержат number условия skip, вывести "Skipping row [row_number] due to condition"

Номера строк следует указывать с использованием индексации, начинающейся с 0 (первая строка имеет номер 0). Обработай только то number строк, которое указано в первом входном значении, и проверяй только первые 5 столбцов каждой строки.

Попробуйте сами

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Чтение ввода
    var rowsInput string
    var skipConditionInput string
    fmt.Scanln(&rowsInput)
    fmt.Scanln(&skipConditionInput)
    
    // Разбор входных данных
    numRows, _ := strconv.Atoi(rowsInput)
    skipCondition, _ := strconv.Atoi(skipConditionInput)
    
    // Предоставленный двумерный массив данных
    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: Напишите ваш код ниже
    // Используйте вложенные циклы с помеченным continue для обработки данных
    // Проверьте каждую строку на число условия пропуска
    // Выведите соответствующие сообщения в зависимости от того, найдено ли условие
    
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

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

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