Menu
Coddy logo textTech

מעבר על מערכים דו־ממדיים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 12 מתוך 56.

כדי לעבור על כל תא במערך דו־ממדי, מקננים שתי איטרציות. הלולאה החיצונית עוברת על השורות; הלולאה הפנימית עוברת על העמודות באותה שורה.

התבנית האידיומטית ביותר ב-Ruby משתמשת ב-each פעמיים:

grid = [
  [1, 2, 3],
  [4, 5, 6]
]

grid.each do |row|
  row.each do |cell|
    puts cell
  end
end
# 1, 2, 3, 4, 5, 6  (כל אחד בשורה נפרדת)

אם אתה זקוק גם לאינדקסים של השורה והעמודה, למשל כדי לתת תווית לכל תא, השתמש ב־each_with_index בשתי הרמות:

grid.each_with_index do |row, r|
  row.each_with_index do |cell, c|
    puts "(#{r},#{c}) = #{cell}"
  end
end

הסגנון הזה קצר ובטוח יותר ממעקב ידני אחר אינדקסים; אין סכנה לחרוג מסוף השורה.

challenge icon

אתגר

קל

מערך דו־ממדי grid נתון (3 שורות × 3 עמודות של מספרים שלמים).

עבור כל שורה, מצאו כל תא שהערך שלו גדול מהממוצע של אותה שורה בלבד. הדפיסו כל תא כזה בשורה נפרדת בפורמט:

(r,c) = value

השתמשו ב־each_with_index מקונן. חשבו את הממוצע בתוך הלולאה החיצונית כדי שהסף של כל שורה יהיה עצמאי.

עבור מערך ברירת המחדל, התאים שהערך שלהם גדול מהממוצע של השורה שלהם הם:

(0,1) = 8
(1,2) = 9
(2,0) = 6
(2,1) = 7

נסו בעצמכם

grid = [
  [1, 8, 3],
  [4, 5, 9],
  [6, 7, 2]
]

# TODO: שימוש מקונן ב-each_with_index, הדפס תאים > הממוצע של השורה
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Ruby אונליין