Boucles imbriquées
Fait partie de la section Fondamentaux du Journey R de Coddy. Leçon 44 sur 78.
Tu peux placer une boucle à l’intérieur d’une autre boucle pour créer une boucle imbriquée. La boucle interne s’exécute entièrement à chaque itération de la boucle externe, ce qui est utile pour travailler avec des combinaisons ou des motifs en forme de grille.
rows <- 3
cols <- 2
for (i in 1:rows) {
for (j in 1:cols) {
cat("i =", i, ", j =", j, "\n")
}
}Sortie :
i = 1 , j = 1
i = 1 , j = 2
i = 2 , j = 1
i = 2 , j = 2
i = 3 , j = 1
i = 3 , j = 2Pour chaque valeur de i, la boucle interne parcourt toutes les valeurs de j. Lorsque i vaut 1, j va de 1 à 2. Ensuite, i devient 2 et j recommence de 1 à 2. rows et cols ne changent jamais : ils indiquent seulement aux boucles quand s’arrêter.
Un exemple pratique consiste à créer un motif de multiplication simple :
for (row in 1:3) {
for (col in 1:3) {
cat(row * col, " ")
}
cat("\n")
}Résultat :
1 2 3
2 4 6
3 6 9La boucle externe contrôle les lignes, tandis que la boucle interne gère chaque colonne de cette ligne. Après avoir terminé chaque ligne, nous affichons un saut de ligne pour passer à la ligne suivante.
Défi
FacileLisez deux nombres depuis l’entrée : rows et cols.
Utilisez des boucles imbriquées pour afficher un rectangle de nombres où chaque cellule contient la somme de son numéro de ligne et de son numéro de colonne. Les lignes sont numérotées de 1 à rows, et les colonnes sont numérotées de 1 à cols.
Affichez chaque ligne sur sa propre ligne, avec les valeurs séparées par une seule espace. Utilisez cat() pour la sortie, en ajoutant un saut de ligne après chaque ligne.
Par exemple, si les entrées sont 3 et 4, la sortie doit être :
2 3 4 5
3 4 5 6
4 5 6 7Dans la première ligne (ligne 1), les valeurs sont 1+1=2, 1+2=3, 1+3=4, 1+4=5. Dans la deuxième ligne (ligne 2), les valeurs sont 2+1=3, 2+2=4, 2+3=5, 2+4=6, et ainsi de suite.
cat() met une espace entre les valeurs que vous lui donnez, donc cat(row + col, "") affiche le nombre suivi d’exactement une espace.
Utilisez un nouveau compteur pour chaque boucle (par exemple row pour les lignes et col pour les nombres d’une ligne) et comparez-le à rows ou cols. Ne modifiez pas rows et cols eux-mêmes : chaque ligne a besoin de cols à nouveau.
Essayez vous-même
# Lire les données d’entrée
con <- file("stdin", "r")
rows <- as.integer(suppressWarnings(readLines(con, n = 1)))
cols <- as.integer(suppressWarnings(readLines(con, n = 1)))
close(con)
# TODO: Écrivez votre code ci-dessous
# Utilisez des boucles imbriquées pour afficher un rectangle dans lequel chaque cellule contient row + column
# Utilisez cat() pour afficher les valeurs séparées par des espaces, avec un retour à la ligne après chaque rangéeCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs - Partie 2
Opérateurs logiques (AND, OR)Opérateurs logiques - Partie 2 (NOT)Récapitulatif - Logique simpleLogique vectorisée - Partie 1Logique vectorisée - Partie 27Calculateur de partage d'addition
Message de bienvenueRécupérer la saisie utilisateur10FizzBuzz avec une variante
Présentation du jeuLa fonction FizzBuzz2Variables et types de données
Type de données numériqueType de données entierType de données caractèreType de données logiqueVérification des types de donnéesConventions de nommageValeurs manquantes : NARécapitulatif - Création de variables8Boucles
Boucle ForBoucle WhileBreakSuivant (Continue)Récapitulatif - FactorielleGénération de séquences (seq, :)Boucles imbriquéesRécapitulatif - Saisie dynamique3Opérateurs, partie 1
Opérateurs arithmétiquesDivision entière et moduloOpérateurs d'affectationRécapitulatif - Mathématiques simplesOpérateurs de comparaison6Entrées/Sorties de base
Affichage avec PrintCat pour l'affichageAffichage avec des variablesLire l'entrée avec readline()Bases de la conversion de typesRécapitulatif - Calculateur d'âgeRécapitulatif - Vrai ou Faux9Fonctions
Déclarer une fonctionArguments de fonctionValeurs de retourRécapitulatif - Fonction SigmaRécapitulatif - Fonction de validationValeurs de paramètres par défautEntraînez-vous par vous-même : Compilateur R en ligne