Menu
CoddyTech

Truy cập phần tử trong mảng 2 chiều

Thuộc phần Logic và luồng xử lý trong hành trình Ruby của Coddy. Bài học 11 trên 56.

Để đọc hoặc cập nhật một ô trong mảng 2D, hãy dùng liên tiếp hai lần tra cứu chỉ số: lần đầu chọn hàng, lần thứ hai chọn cột.

matrix = [
  [10, 20, 30],
  [40, 50, 60],
  [70, 80, 90]
]

puts matrix[0][0]   # 10  (trên cùng bên trái)
puts matrix[1][2]   # 60  (hàng 1, cột 2)
puts matrix[2][0]   # 70  (dưới cùng bên trái)

Cập nhật một ô dùng cùng cú pháp ở phía bên trái:

matrix[0][1] = 99
puts matrix[0].inspect   # [10, 99, 30]

Hai truy vấn hữu ích để xem kích thước:

puts matrix.length         # 3 (số hàng)
puts matrix[0].length      # 3 (số cột trong hàng 0)

Chỉ số bắt đầu từ 0 và tăng đến length - 1. Truy cập vượt quá phần tử cuối sẽ trả về nil thay vì gây ra lỗi.

challenge icon

Thử thách

Người mới

Đã cho mảng 2D matrix. Đọc ba số nguyên (ba dòng): r1, c1, rồi đến v. Sau đó:

  1. In ra giá trị tại matrix[r1][c1]
  2. Gán matrix[r1][c1] = v
  3. In ra toàn bộ matrix đã cập nhật bằng inspect

Với đầu vào 1 / 2 / 99, đầu ra là:

60
[[10, 20, 30], [40, 50, 99], [70, 80, 90]]

Tự làm thử

matrix = [
  [10, 20, 30],
  [40, 50, 60],
  [70, 80, 90]
]

r1 = gets.to_i
c1 = gets.to_i
v  = gets.to_i

# TODO: in ra matrix[r1][c1], gán v, rồi in ra toàn bộ matrix
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng xử lý

Tự luyện tập: Trình biên dịch Ruby online