4a1.0 בדיקה האם שתי מחסניות זהות
כתבו פונקציה StacksEqual
שבודקת אם שתי המחסניות זהות.
4a1.1 בדיקת פלינדרום במחסנית
עליכם לממש פונקציה בשם IsStackPalindrome
אשר מקבלת פרמטר אחד:
- s - מחסנית שלמים מסוג Unit4.CollectionsLib.Stack
הפונקציה צריכה לבדוק האם המחסנית היא פלינדרום, כלומר, סדר האיברים מהראש לתחתית זהה לסדר מהתחתית לראש.
הפונקציה תחזיר true
אם המחסנית היא פלינדרום, ו-false
אחרת.
דגשים חשובים:
- שחזור מצב המחסנית: חובה להקפיד על כך שהמחסנית s תחזור למצבה המקורי (אותם איברים ובאותו סדר) בסיום הפעולה, ללא קשר לתוצאת הבדיקה.
- שימוש במבני נתונים עזר: מותר ואף מומלץ להשתמש במבני נתונים עזר (כגון מחסניות או תורים נוספים) כדי לבצע את הבדיקה ולשחזר את המחסנית המקורית.
- הערה ל-C#: יש להשתמש ב-using Unit4.CollectionsLib; כדי לגשת למחלקת Stack.
דוגמאות:
- עבור המחסנית [1, 2, 3, 2, 1] (כאשר 1 הוא בראש המחסנית), הפונקציה תחזיר: True
- עבור המחסנית [A, B, C, B, A] (כאשר A הוא בראש המחסנית), הפונקציה תחזיר: True
- עבור המחסנית [1, 2, 3, 4] (כאשר 1 הוא בראש המחסנית), הפונקציה תחזיר: False
- עבור המחסנית [X] (כאשר X הוא בראש המחסנית), הפונקציה תחזיר: True
- עבור מחסנית ריקה [], הפונקציה תחזיר: True
4a1.8 הסרת מופעים ממחסנית
עליכם לממש פונקציה בשם RemoveAllOccurrences
אשר מקבלת שני פרמטרים:
- stack - מחסנית מסוג Unit4.CollectionsLib.Stack
- itemToRemove - מספר שלם המייצג את האיבר שיש להסיר מכל מופעיו במחסנית
הפונקציה צריכה להסיר את כל המופעים של itemToRemove
מהמחסנית stack
, תוך שמירה על הסדר היחסי של שאר האיברים במחסנית.
הערות:
- השתמשו במבנה נתונים עזר (לדוגמה, מחסנית נוספת) כדי לשמור על סדר האיברים.
- בתחילת הפונקציה, המחסנית stack עשויה להכיל איברים. בסיום הפונקציה, המחסנית stack צריכה להכיל את האיברים המקוריים למעט אלו שהוסרו, ובאותו סדר יחסי.
דוגמאות:
- עבור מחסנית: [3, 1, 4, 1, 5, 9] (כאשר 9 בראש המחסנית) והאיבר להסרה הוא 1, המחסנית לאחר הפעולה תהיה: [3, 4, 5, 9]
- עבור מחסנית: [10, 20, 10, 30] והאיבר להסרה הוא 10, המחסנית לאחר הפעולה תהיה: [20, 30]
- עבור מחסנית: [1, 2, 3] והאיבר להסרה הוא 4, המחסנית לא תשתנה: [1, 2, 3]
4a1.3 העתקה ממחסנית
עליכם לממש פונקציה בשם CopyStack
אשר מקבלת מחסנית מסוג Unit4.CollectionsLib.Stack
ומחזירה מחסנית חדשה שהיא העתק זהה של המקורית.
דרישות:
- הפונקציה צריכה לקבל מחסנית שלמים Stack.
- הפונקציה צריכה להחזיר מחסנית חדשה מסוג Stack המכילה את אותם איברים ובאותו סדר כמו המחסנית המקורית.
- חשוב מאוד: המחסנית המקורית חייבת לחזור למצבה המקורי (אותם איברים ובאותו סדר) בסיום הפעולה.
###
שימוש במחלקות עזר:
- ניתן ומומלץ להשתמש במחסניות עזר (לדוגמה, Stack) כדי לבצע את ההעתקה תוך שמירה על המחסנית המקורית.
דוגמאות:
עבור מחסנית מקורית: [1, 2, 3] (כאשר 1 הוא בראש המחסנית) הפונקציה תחזיר מחסנית חדשה: [1, 2, 3] והמחסנית המקורית תישאר: [1, 2, 3]
עבור מחסנית מקורית: [“A”, “B”, “C”, “D”] הפונקציה תחזיר מחסנית חדשה: [“A”, “B”, “C”, “D”] והמחסנית המקורית תישאר: [“A”, “B”, “C”, “D”]
עבור מחסנית ריקה: [] הפונקציה תחזיר מחסנית חדשה: [] והמחסנית המקורית תישאר: []
4a1.9 השוואת תוכן מחסניות
עליכם לממש פונקציה בשם AreStacksEqual
אשר מקבלת שני פרמטרים:
- st1 - מחסנית של מספרים שלמים (מסוג Stack Unit4)
- st2 - מחסנית של מספרים שלמים (מסוג Stack Unit4)
הפונקציה צריכה לבדוק האם שתי המחסניות מכילות בדיוק את אותם האיברים, ללא קשר לסדרם.
דרישות:
- הפונקציה תחזיר true אם שתי המחסניות מכילות את אותם האיברים, וfalse אחרת.
- מובטח שבכל אחת מהמחסניות המספרים שונים זה מזה (אין כפילויות בתוך אותה מחסנית).
- בסיום הפעולה, שתי המחסניות שהתקבלו כפרמטרים חייבות לחזור למצבן המקורי (כלומר, להכיל את אותם איברים ובאותו סדר כמו לפני קריאת הפונקציה).
שימו לב:
- השתמשו בusing Unit4.CollectionsLib; כדי לגשת למחלקת Stack.
- ניתן להשתמש במבני נתונים עזר (כמו מחסניות או תורים נוספים) כדי לשמור על סדר האיברים ולשחזר את המחסניות המקוריות.
דוגמאות:
- עבור מחסנית 1: [1, 2, 3] ומחסנית 2: [3, 1, 2], הפונקציה תחזיר: True
- עבור מחסנית 1: [10, 20] ומחסנית 2: [10, 30], הפונקציה תחזיר: False
- עבור מחסנית 1: [5] ומחסנית 2: [5], הפונקציה תחזיר: True
- עבור מחסנית 1: [1, 2, 3] ומחסנית 2: [1, 2], הפונקציה תחזיר: False
4a1.7 מציאת איבר מינימאלי והעברתו לראש המחסנית
עליכם לממש פונקציה בשם MoveMinToTop
אשר מקבלת פרמטר אחד:
- s - מחסנית של מספרים שלמים (מסוג Unit4.CollectionsLib.Stack).
הפונקציה צריכה לבצע את הפעולות הבאות:
- למצוא את האיבר המינימלי במחסנית.
- להעביר את האיבר המינימלי לראש המחסנית.
- לשמור על הסדר היחסי של כל שאר האיברים במחסנית.
- הפונקציה אינה מחזירה ערך (void), אלא משנה את המחסנית שקיבלה כפרמטר.
דגשים:
- השתמשו במבני נתונים עזר (כגון מחסנית נוספת או תור) כדי לבצע את המשימה.
- אין להשתמש בשיטות מובנות של List או Array לחיפוש מינימום או שינוי סדר.
- המחסנית יכולה להכיל מספרים חיוביים ושליליים.
- שימו לב שהמחסנית משתנה כתוצאה מהפעולה.
דוגמאות:
- עבור המחסנית [5, 2, 8, 1, 9] (כאשר 5 בראש המחסנית), הפונקציה תשנה את המחסנית ל- [1, 5, 2, 8, 9].
- עבור המחסנית [7, 3, 10, 4] (כאשר 7 בראש המחסנית), הפונקציה תשנה את המחסנית ל- [3, 7, 10, 4].
- עבור המחסנית [1] (כאשר 1 בראש המחסנית), הפונקציה תשנה את המחסנית ל- [1].
4a1.4 סכום איברי מחסנית
עליכם לממש פונקציה בשם SumStackElements
אשר מקבלת פרמטר אחד:
- stack - מחסנית של מספרים שלמים (מסוג Unit4.CollectionsLib.Stack).
הפונקציה צריכה לחשב ולהחזיר את סכום כל האיברים במחסנית.
דרישה חשובה: יש להקפיד על כך שהמחסנית המקורית תחזור למצבה המקורי (אותם איברים ובאותו סדר) בסיום הפעולה.
דגשים:
- השתמשו במחסנית עזר כדי לשמור את האיברים שנשלפו מהמחסנית המקורית.
- לאחר חישוב הסכום, החזירו את האיברים ממחסנית העזר בחזרה למחסנית המקורית.
- יש להשתמש ב-using Unit4.CollectionsLib; בקובץ הפתרון.
דוגמאות:
- עבור המחסנית [1, 2, 3] (כאשר 3 בראש המחסנית), הפונקציה תחזיר 6. לאחר הפעולה, המחסנית תישאר [1, 2, 3].
- עבור המחסנית [10, 5, 15, 2] (כאשר 2 בראש המחסנית), הפונקציה תחזיר 32. לאחר הפעולה, המחסנית תישאר [10, 5, 15, 2].
- עבור מחסנית ריקה, הפונקציה תחזיר 0. לאחר הפעולה, המחסנית תישאר ריקה.
4a1.5 ספירת איברים במחסנית
עליכם לממש פונקציה בשם CountStackElements
אשר מקבלת פרמטר אחד:
- st - מחסנית (מסוג Unit4.CollectionsLib.Stack
הפונקציה צריכה לחשב ולהחזיר את מספר האיברים במחסנית.
דרישה חשובה: בסיום הפעולה, המחסנית המקורית חייבת לחזור למצבה המקורי (כלומר, להכיל את אותם איברים באותו סדר).
דגשים:
- השתמשו בלולאה כדי לעבור על איברי המחסנית.
- השתמשו במבנה נתונים עזר (כמו מחסנית נוספת) כדי לשמור באופן זמני על האיברים שאתם מוציאים מהמחסנית המקורית.
- לאחר סיום הספירה, החזירו את האיברים ממבנה הנתונים העזר בחזרה למחסנית המקורית.
- השתמשו במחלקה Unit4.CollectionsLib.Stack.
דוגמאות:
- עבור מחסנית המכילה את האיברים [3, 2, 1] (כאשר 3 בראש המחסנית), הפונקציה תחזיר 3.
- עבור מחסנית ריקה, הפונקציה תחזיר 0.
- עבור מחסנית המכילה את האיברים [“a”, “b”, “c”, “d”] (כאשר “a” בראש המחסנית), הפונקציה תחזיר 4.
4a1.6 ספירת מופעים של איבר במחסנית
עליכם לממש פונקציה בשם CountOccurrences
אשר מקבלת שני פרמטרים:
- stack - מחסנית מסוג Stack
- item - האיבר שאותו יש לספור.
הפונקציה צריכה להחזיר את מספר הפעמים שהאיבר item
מופיע במחסנית stack
.
דרישה חשובה: בסיום הפעולה, המחסנית stack
חייבת לחזור למצבה המקורי (כלומר, להכיל את אותם איברים באותו סדר).
דגשים:
- השתמשו במחלקת Stack מהספרייה Unit4.CollectionsLib.
- כדי לשמור על סדר האיברים ולשחזר את המחסנית, תצטרכו להשתמש במחסנית עזר נוספת.
דוגמאות:
- עבור מחסנית המכילה: [10, 20, 10, 30, 10] והאיבר 10, הפונקציה תחזיר 3.
- עבור מחסנית המכילה: [5, 8, 2, 8] והאיבר 8, הפונקציה תחזיר 2.
- עבור מחסנית המכילה: [1, 2, 3] והאיבר 4, הפונקציה תחזיר 0.