Saya seharusnya "Menulis program yang menggunakan dua loop while bersarang untuk mencetak baris dan kolom dari kisi 3x3 (bernomor 1 hingga 3), mengecualikan sel di sepanjang diagonal (yaitu, di mana baris dan kolom memiliki nilai yang sama )."

Saya mencoba mencetak baris, col = 1, 1 dengan menambahkan satu ke setiap iterasi.

row, col = 1, 1

while row != 3 and col != 3:
    row += 1
    col += 1
print (row, col)

Hasilnya akan terlihat seperti ini: 1 2 1 3 2 1 vertikal 12 di atas, 13 di tengah dan 21 di bawah.

0
Yoko Koko 20 September 2019, 07:19

1 menjawab

Jawaban Terbaik

Loop while bersarang umumnya berarti di dalam kedua yang pertama. Saya tidak tahu bahasa apa yang Anda gunakan, tetapi Anda harus mempertimbangkan sesuatu yang lebih seperti:

while row <= 3:
  while col <= 3:
    print (row, col)
    col++
  col = 1
  row++

Ini tidak melakukan pemeriksaan diagonal, tetapi ini menunjukkan ide loop bersarang:

  1. Loop luar dimulai dengan row = 1 dan col = 1.
  2. Lingkaran dalam dimulai.
  3. Loop dalam menghitung kolom 1-3, lalu keluar;
  4. Loop luar menyetel ulang col ke 1 dan menambah baris
  5. Iterasi berikutnya dari loop luar dimulai dengan baris baru.
  6. Langkah 2-5 ulangi sampai row = 4, pada titik mana loop luar keluar dan selesai.

Berikut adalah contoh hal semacam ini dalam javascript, termasuk pemeriksaan diagonal:

let row = 1;
let col = 1;

// do this block until row > 3
while (row <= 3) {

  // declare a new array to collect this row's output
  let output = []; 

  // do this block until col > 3
  while (col <= 3) {

    // add the column or '-' to the end of the array
    output.push( row === col ? '-' : col );

    // increment the column
    col++;
  }
  
  // row finished. emit the collected
  // row with a space between the numbers
  console.log(output.join(' '));

  // reset column to 1
  col = 1;

  // do the next row
  row++;
}
0
ray hatfield 20 September 2019, 05:01