אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — יסודות (שאלון 899371)מבחן 2016 · קיץ מועד א · שאלה 10כל שאלות המבחן ←
תכנות מונחה עצמיםמחלקות ואובייקטים

מטריצה דלילה (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
סעיף א1

כתוב ב-Java או ב-C# את הכותרת ואת התכונות של המחלקה Item, המייצגת איבר שונה מ-0 במטריצה הדלילה: הערך של האיבר, מספר השורה שבה נמצא האיבר, ומספר העמודה שבה נמצא.

סעיף א2

כתוב ב-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)

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי