Menu
CoddyTech

Переход к следующей итерации конкретного цикла

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

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

Это особенно полезно во вложенных циклах, когда из внутреннего цикла нужно пропустить остаток текущей итерации внешнего цикла, а не просто продолжить внутренний цикл.

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 пропускает оставшуюся часть текущей итерации внешнего цикла, включая внутренний цикл и сообщение «Конец итерации внешнего цикла». Затем программа сразу переходит к следующей итерации внешнего цикла, где i становится равным 2.

challenge icon

Задание

Легко

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

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

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

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

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

Номера строк нужно указывать с индексацией, начинающейся с 0 (первая строка — 0). Обрабатывай только количество строк, указанное во входном значении, и проверяй только первые 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