Menu
Coddy logo textTech

Zugriff auf 2D-Elemente

Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy — Lektion 11 von 56.

Um eine einzelne Zelle in einem 2D-Array zu lesen oder zu aktualisieren, verketten Sie zwei Index-Abfragen: Die erste wählt die Zeile aus, die zweite die Spalte.

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

puts matrix[0][0]   # 10  (oben links)
puts matrix[1][2]   # 60  (Zeile 1, Spalte 2)
puts matrix[2][0]   # 70  (unten links)

Das Aktualisieren einer Zelle verwendet dieselbe Syntax auf der linken Seite:

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

Zwei nützliche Abfragen zur Form:

puts matrix.length         # 3 (Anzahl der Zeilen)
puts matrix[0].length      # 3 (Spalten in Zeile 0)

Indizes beginnen bei 0 und gehen bis zu length - 1. Das Überschreiten des Endes gibt nil zurück, anstatt einen Fehler auszulösen.

challenge icon

Aufgabe

Anfänger

Das 2D-Array matrix ist vorgegeben. Lies drei Ganzzahlen (drei Zeilen) ein: r1, c1, dann v. Dann:

  1. Gib den Wert an der Stelle matrix[r1][c1] aus
  2. Setze matrix[r1][c1] = v
  3. Gib das gesamte aktualisierte matrix mit inspect aus

Für die Eingabe 1 / 2 / 99 lautet die Ausgabe:

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

Spickzettel

Greifen Sie auf Zellen in einem 2D-Array mit verketteten Indizes [row][col] zu und aktualisieren Sie diese:

matrix = [
  [10, 20, 30],
  [40, 50, 60]
]

puts matrix[1][2]    # 60
matrix[1][2] = 99    # Zelle aktualisieren
puts matrix.inspect  # [[10, 20, 30], [40, 50, 99]]

Form-Abfragen:

matrix.length      # Anzahl der Zeilen
matrix[0].length   # Anzahl der Spalten in Zeile 0

Indizes beginnen bei 0; der Zugriff außerhalb der Grenzen gibt nil zurück.

Probier es selbst

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

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

# TODO: matrix[r1][c1] ausgeben, v zuweisen, dann die gesamte matrix ausgeben
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Programmfluss