Menu
Coddy logo textTech

Cicli annidati

Fa parte della sezione Fondamenti del percorso R di Coddy. Lezione 44 di 78.

Puoi inserire un ciclo all'interno di un altro ciclo per creare un ciclo annidato. Il ciclo interno viene eseguito completamente per ogni iterazione del ciclo esterno, il che è utile quando lavori con combinazioni o schemi a griglia.

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

Output:

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

Per ogni valore di i, il ciclo interno scorre tutti i valori di j. Quando i è 1, j va da 1 a 2. Poi i diventa 2 e j ricomincia da 1 a 2.

Un esempio pratico è creare un semplice schema di moltiplicazione:

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

Output:

1  2  3  
2  4  6  
3  6  9

Il ciclo esterno controlla le righe, mentre il ciclo interno gestisce ogni colonna all'interno di quella riga. Dopo aver completato ogni riga, stampiamo un'interruzione di riga per passare alla riga successiva.

challenge icon

Sfida

Facile

Leggi due numeri dall’input: rows e cols.

Usa cicli annidati per stampare un rettangolo di numeri in cui ogni cella contiene la somma del numero della riga e del numero della colonna. Le righe sono numerate da 1 a rows e le colonne da 1 a cols.

Stampa ogni riga su una propria linea, con i valori separati da un singolo spazio. Usa cat() per stampare i valori e aggiungi una nuova riga dopo ogni riga.

Per esempio, se gli input sono 3 e 4, l’output dovrebbe essere:

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

Nella prima riga (riga 1), i valori sono 1+1=2, 1+2=3, 1+3=4, 1+4=5. Nella seconda riga (riga 2), i valori sono 2+1=3, 2+2=4, 2+3=5, 2+4=6, e così via.

Provalo tu

# Leggi l'input
con <- file("stdin", "r")
rows <- as.integer(suppressWarnings(readLines(con, n = 1)))
cols <- as.integer(suppressWarnings(readLines(con, n = 1)))
close(con)

# TODO: Scrivi il tuo codice qui sotto
# Usa cicli annidati per stampare un rettangolo in cui ogni cella contiene row + column
# Usa cat() per stampare i valori separati da spazi, con un ritorno a capo dopo ogni riga
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore R online