Loop Bersarang
Termasuk bagian Dasar-Dasar dalam perjalanan R di Coddy. Pelajaran 44 dari 78.
Kamu dapat menempatkan perulangan di dalam perulangan lain untuk membuat perulangan bersarang. Perulangan bagian dalam berjalan sepenuhnya untuk setiap iterasi perulangan bagian luar, sehingga ini berguna saat bekerja dengan kombinasi atau pola seperti kisi.
rows <- 3
cols <- 2
for (i in 1:rows) {
for (j in 1:cols) {
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 = 2Untuk setiap nilai i, perulangan bagian dalam menelusuri semua nilai j. Saat i bernilai 1, j berjalan dari 1 sampai 2. Lalu i menjadi 2, dan j mulai lagi dari 1 sampai 2. rows dan cols tidak pernah berubah: keduanya hanya memberi tahu perulangan kapan harus berhenti.
Contoh praktisnya adalah membuat pola perkalian sederhana:
for (row in 1:3) {
for (col in 1:3) {
cat(row * col, " ")
}
cat("\n")
}Output:
1 2 3
2 4 6
3 6 9Perulangan luar mengatur baris, sedangkan perulangan dalam menangani setiap kolom pada baris tersebut. Setelah menyelesaikan setiap baris, kita mencetak baris baru untuk berpindah ke baris berikutnya.
Tantangan
MudahBaca dua angka dari input: rows dan cols.
Gunakan perulangan bersarang untuk mencetak persegi panjang berisi angka, dengan setiap sel berisi jumlah nomor baris dan nomor kolomnya. Baris diberi nomor dari 1 sampai rows, dan kolom diberi nomor dari 1 sampai cols.
Cetak setiap baris pada barisnya sendiri, dengan nilai dipisahkan oleh satu spasi. Gunakan cat() untuk output, lalu tambahkan baris baru setelah setiap baris.
Misalnya, jika inputnya adalah 3 dan 4, outputnya akan seperti ini:
2 3 4 5
3 4 5 6
4 5 6 7Pada baris pertama (baris 1), nilainya adalah 1+1=2, 1+2=3, 1+3=4, 1+4=5. Pada baris kedua (baris 2), nilainya adalah 2+1=3, 2+2=4, 2+3=5, 2+4=6, dan seterusnya.
cat() menyisipkan spasi di antara nilai yang kamu berikan, jadi cat(row + col, "") mencetak angka yang diikuti tepat satu spasi.
Gunakan pencacah baru untuk setiap perulangan (misalnya, row untuk baris dan col untuk angka pada sebuah baris), lalu bandingkan dengan rows atau cols. Jangan ubah rows dan cols itu sendiri: setiap baris memerlukan cols lagi.
Coba sendiri
# Baca input
con <- file("stdin", "r")
rows <- as.integer(suppressWarnings(readLines(con, n = 1)))
cols <- as.integer(suppressWarnings(readLines(con, n = 1)))
close(con)
# TODO: Tulis kodemu di bawah ini
# Gunakan perulangan bersarang untuk mencetak persegi panjang dengan setiap sel berisi row + column
# Gunakan cat() untuk mencetak nilai yang dipisahkan spasi, dengan baris baru setelah setiap barisPelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
4Operator Bagian 2
Operator Logika (AND, OR)Operator Logika Bagian 2 (NOT)Rangkuman: Logika SederhanaLogika Tervektorisasi Bagian 1Logika Tervektorisasi Bagian 27Kalkulator Pembagi Tagihan
Pesan Selamat DatangMenerima Input Pengguna10FizzBuzz dengan Sentuhan Unik
Ikhtisar PermainanFungsi FizzBuzz2Variabel dan Tipe Data
Tipe Data NumerikTipe Data IntegerTipe Data KarakterTipe Data LogikaMemeriksa Tipe DataKonvensi PenamaanNilai yang Hilang: NARingkasan: Membuat Variabel8Perulangan
For LoopWhile LoopBreakBerikutnya (Continue)Ringkasan: FaktorialPembuatan Urutan (seq, :)Loop BersarangRingkasan: Input Dinamis3Operator Bagian 1
Operator AritmetikaPembagian Bilangan Bulat dan ModuloOperator PenugasanRangkuman: Matematika SederhanaOperator Perbandingan6Dasar input/output
Cetak outputcat untuk outputOutput dengan variabelMembaca input dengan readline()Dasar konversi tipe dataRingkasan: Kalkulator usiaRingkasan: Benar atau salah9Fungsi
Mendeklarasikan FungsiArgumen FungsiNilai KembalianUlasan: Fungsi SigmaUlasan: Fungsi ValidasiNilai Parameter Default12Melakukan Iterasi pada Urutan
Mengiterasi Elemen VektorMenggunakan seq_along()Mengiterasi Karakter (strsplitFungsi Manipulasi stringLatihan sendiri: Compiler R online