Menu
CoddyTech

Bucles anidados

Parte de la sección Fundamentos del Journey de R de Coddy. Lección 44 de 78.

Puedes colocar un bucle dentro de otro para crear un bucle anidado. El bucle interno se ejecuta por completo en cada iteración del bucle externo, lo que resulta útil al trabajar con combinaciones o patrones similares a una cuadrícula.

rows <- 3
cols <- 2
for (i in 1:rows) {
  for (j in 1:cols) {
    cat("i =", i, ", j =", j, "\n")
  }
}

Salida:

i = 1 , j = 1 
i = 1 , j = 2 
i = 2 , j = 1 
i = 2 , j = 2 
i = 3 , j = 1 
i = 3 , j = 2

Para cada valor de i, el bucle interno recorre todos los valores de j. Cuando i es 1, j va de 1 a 2. Después, i pasa a ser 2 y j vuelve a empezar desde 1 hasta 2. rows y cols nunca cambian: solo indican a los bucles cuándo detenerse.

Un ejemplo práctico es crear un patrón de multiplicación sencillo:

for (row in 1:3) {
  for (col in 1:3) {
    cat(row * col, " ")
  }
  cat("\n")
}

Salida:

1  2  3  
2  4  6  
3  6  9

El bucle externo controla las filas, mientras que el bucle interno se encarga de cada columna dentro de esa fila. Después de completar cada fila, imprimimos un salto de línea para pasar a la siguiente línea.

challenge icon

Desafío

Fácil

Lee dos números de la entrada: rows y cols.

Usa bucles anidados para imprimir un rectángulo de números donde cada celda contiene la suma de su número de fila y su número de columna. Las filas están numeradas del 1 a rows, y las columnas están numeradas del 1 a cols.

Imprime cada fila en su propia línea, con los valores separados por un solo espacio. Usa cat() para la salida, añadiendo un salto de línea después de cada fila.

Por ejemplo, si las entradas son 3 y 4, la salida debería ser:

2 3 4 5 
3 4 5 6 
4 5 6 7

En la primera fila (fila 1), los valores son 1+1=2, 1+2=3, 1+3=4, 1+4=5. En la segunda fila (fila 2), los valores son 2+1=3, 2+2=4, 2+3=5, 2+4=6, y así sucesivamente.

cat() pone un espacio entre los valores que le das, así que cat(row + col, "") imprime el número seguido exactamente de un espacio.

Usa un contador nuevo para cada bucle (por ejemplo, row para las filas y col para los números de una fila) y compáralo con rows o cols. No cambies rows ni cols: cada fila vuelve a necesitar cols.

Pruébalo tú mismo

# Lee la entrada
con <- file("stdin", "r")
rows <- as.integer(suppressWarnings(readLines(con, n = 1)))
cols <- as.integer(suppressWarnings(readLines(con, n = 1)))
close(con)

# TODO: Escribe tu código a continuación
# Usa bucles anidados para imprimir un rectángulo en el que cada celda contenga fila + columna
# Usa cat() para imprimir los valores separados por espacios, con un salto de línea después de cada fila
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de R online