מטריצה דלילה (sparse matrix) היא מערך דו-ממדי מטיפוס מספרי שלם, שרוב האיברים בו שווים ל-0. כדי לחסוך מקום בזיכרון של המחשב, אפשר לשמור רק את האיברים של המערך הדו-ממדי השונים מ-0. בעבור כל איבר כזה נשמרים ערכו של האיבר במערך הדו-ממדי ומיקומו: מספר השורה ומספר העמודה. הוגדרה המחלקה Item המייצגת איבר שונה מ-0 במטריצה הדלילה, ותכונותיה הן: הערך של האיבר במערך הדו-ממדי, ומיקומו — מספר השורה ומספר העמודה. הוגדרה מחלקה נוספת Sparse, שתכונותיה הן: מערך חד-ממדי itemAr מטיפוס Item, rows — מספר שלם, מספר השורות במטריצה הדלילה, cols — מספר שלם, מספר העמודות במטריצה הדלילה. במחלקה Sparse נתונה (קיימת, אין צורך לממש) פעולה countNoZero/CountNoZero, המקבלת מערך דו-ממדי ומחזירה את מספר האיברים בו שאינם שווים ל-0.
מטריצה דלילה (sparse matrix) היא מערך דו-ממדי מטיפוס מספרי שלם, שרוב האיברים בו שווים ל-0. כדי לחסוך מקום בזיכרון של המחשב, אפשר לשמור רק את האיברים של המערך הדו-ממדי השונים מ-0. בעבור כל איבר כזה נשמרים ערכו של האיבר במערך הדו-ממדי ומיקומו: מספר השורה ומספר העמודה. הוגדרה המחלקה Item המייצגת איבר שונה מ-0 במטריצה הדלילה, ותכונותיה הן: הערך של האיבר במערך הדו-ממדי, ומיקומו — מספר השורה ומספר העמודה. הוגדרה מחלקה נוספת Sparse, שתכונותיה הן: מערך חד-ממדי itemAr מטיפוס Item, rows — מספר שלם, מספר השורות במטריצה הדלילה, cols — מספר שלם, מספר העמודות במטריצה הדלילה. במחלקה Sparse נתונה (קיימת, אין צורך לממש) פעולה countNoZero/CountNoZero, המקבלת מערך דו-ממדי ומחזירה את מספר האיברים בו שאינם שווים ל-0.
// הפעולה הבאה כבר קיימת (נתונה) במחלקה Sparse:
public int countNoZero(int[][] mat) {…} // מחזירה את מספר האיברים ב-mat השונים מ-0
מטריצה דלילה לדוגמה בגודל 4×5, ושלושת ה-Item הנגזרים ממנה (סדר שורה-אחר-שורה)
col0 col1 col2 col3 col4
row0 0 1 0 0 0
row1 0 0 0 0 9
row2 0 0 0 0 0
row3 7 0 0 0 0
Items (row-major): value=1,row=0,col=1 | value=9,row=1,col=4 | value=7,row=3,col=0
כתוב ב-Java או ב-C# את הכותרת ואת התכונות של המחלקה Item, המייצגת איבר שונה מ-0 במטריצה הדלילה: הערך של האיבר, מספר השורה שבה נמצא האיבר, ומספר העמודה שבה נמצא.
כתוב ב-Java או ב-C# פעולה בונה במחלקה Item, המקבלת כפרמטרים ערכים לכל אחת משלוש התכונות (value, row, col) ומאתחלת אותן בהתאם.
public Item(int value, int row, int col)
כתוב ב-Java או ב-C# את כותרת המחלקה Sparse ואת התכונות שלה: מערך חד-ממדי itemAr מטיפוס Item, rows — מספר השורות במטריצה הדלילה, cols — מספר העמודות במטריצה הדלילה.
כתוב ב-Java או ב-C# פעולה בונה במחלקה Sparse, המקבלת כפרמטר מערך דו-ממדי מטיפוס int, ובונה ממנו מטריצה דלילה מטיפוס Sparse — תוך שימוש בפעולה countNoZero/CountNoZero הנתונה.
public Sparse(int[][] mat)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.